1. SQL / Говнокод #19358

    +10

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    select
     distinct
        P.CART_ID,
        sum(P.COST) COST,
        cast(P.BUY_DATE as date) BUY_DATE,
        '[' || U.ID || '] ' || U.FAM || ' ' || U.NAME || ' ' || U.VATHERNAME UNAME,
     
    
        list(coalesce((select
                           USERS.NAME
                       from
                           USERS
                       where
                           USERS.ID = C.USERID), 'System') || '(' || C.DATETIME || ') - ' || C.comment, ascii_char(10))
     from
        PRODUCTS_HISTORY P
    right join
        PARTNERS U on U.ID = P.USERID
    join
        COMMENTS C on C.PRODUCTID = P.CART_ID
    where
       -- P.CART_ID is not null and
                p.cart_id = 11888
    group by 1, 3, 4

    Аккуратненький запросик.. Но почему-то он в листе c.comment умножает на p.cart_id.

    Rijen, 28 Января 2016

    Комментарии (4)
  2. SQL / Говнокод #19352

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    use [oktell]
    select 
    	(case when SUBSTRING([Call_status_note],1,1)='1' 
    	then 'Расписание специалиста, '	else ''	end)
    	+(case when SUBSTRING([Call_status_note],2,1)='1' 
    	then 'Стоимость услуг, ' else '' end)
    	+(case when SUBSTRING([Call_status_note],3,1)='1' 
    	then 'Адрес, ' 	else '' end)
    	+(case when SUBSTRING([Call_status_note],4,1)='1' 
    	then 'Вакцина, 'else '' end)
    	+(case when SUBSTRING([Call_status_note],5,1)='1' 
    	then 'Эл.почта, 'else '' end)
    	+(case when SUBSTRING([Call_status_note],6,1)='1' 
    	then 'Перевод звонка в офис и др., 'else '' end)
    	+(case when SUBSTRING([Call_status_note],7,1)='1' 
    	then 'Стоматология, 'else '' end)
    	+(case when SUBSTRING([Call_status_note],8,1)='1' 
    	then 'Неверная информация, 'else '' end)
    	+(case when SUBSTRING([Call_status_note],9,1)='1' 
    	then 'Ведение беременности, 'else '' end)
    	+(case when SUBSTRING([Call_status_note],10,1)='1' 
    	then 'Услуги, операции, анализы, 'else '' end)
    	+(case when SUBSTRING([Call_status_note],11,1)='1' 
    	then 'Вопросы скорой помощи, 'else '' end)
    	+(case when SUBSTRING([Call_status_note],12,1)='1' 
    	then 'Звонок сорвался, 'else '' end) [Заметка]
    from [dbo].[AbonentsMedPark]

    Потребовали максимально быстро реализовать функциолнал. Есть текстовое поле вида "111111000000", надо по флагам вывести текст.
    Конкретно с самим MSSQL работал мало. Я предлагал использовать функцию, мне отказали. Возможно ли реализовать этот запрос более оптимально?

    Rijen, 27 Января 2016

    Комментарии (18)
  3. SQL / Говнокод #19338

    0

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    BEGIN
    	DECLARE CloneID INTEGER DEFAULT 0;
      SET CloneID = (SELECT `id` FROM `users` WHERE (`level` >= ulvl) and (`level`<= ulvl + 2) and (`id`<>uid) ORDER BY RAND() LIMIT 0,1);
      RETURN IFNULL(CloneID,0);
    END

    Получения рандомного идентификатора по двум условиям, жесть то какая. Но лучше я пока не придумал.

    Cynicrus, 20 Января 2016

    Комментарии (1)
  4. SQL / Говнокод #19322

    +1

    1. 1
    AND (T.KATEGORY IN(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25.........86575,86576,86577,86578,86579,86580,86581,86582,86583,86584,86585,86586,86587,86588))

    Это не специально для сайта, это из работающего нечто - то место, где много точек реально заполнено именно так, как подсказывает логика глядя на начало и конец последовательности. Увы, сей сайт не позволяет сполна насладиться всей эстетичностью данного кода ограничивая красоту жалкими 6 тыс. символов...

    Kommanch, 18 Января 2016

    Комментарии (5)
  5. SQL / Говнокод #19246

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    BEGIN	
      DECLARE uid INT DEFAULT 0;
      DECLARE sid INT DEFAULT 0;
      DECLARE nextid INT DEFAULT 0;
      DECLARE gold FLOAT DEFAULT 3.34;
      DECLARE cgold FLOAT DEFAULT 0;
      DECLARE c CURSOR FOR 
        SELECT `id`, `statid` from users;
      OPEN c;
      size: LOOP
        FETCH c INTO uid, sid;
          if sid = 0 
            THEN 
             SET nextid = (SELECT AUTO_INCREMENT FROM information_schema.tables WHERE table_name = 'goldstat' AND table_schema = DATABASE() LIMIT 0,1); 
             UPDATE `users` SET `statid`= nextid WHERE (`id`= uid);
             INSERT INTO `goldstat` VALUES (nextid, uid, gold, '0', '0', '0', '0', '0', '0', '0', '0');
          ELSE
             SET cgold = (SELECT `overall_b` from goldstat WHERE `owner_id` = uid LIMIT 0,1);
              IF cgold = 0 
                THEN
                 SET cgold = cgold + gold;
                 UPDATE `goldstat` SET `overall_b`= cgold WHERE (`owner_id`= uid);
                END IF; 
           END IF;
       END LOOP size;
      CLOSE c;
    END

    Добавляется нулевая статистика уже заре

    Cynicrus, 26 Декабря 2015

    Комментарии (0)
  6. SQL / Говнокод #19186

    −1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    const string sql = @"DROP TABLE IF EXISTS inter_table_tmp;
                CREATE TEMPORARY TABLE inter_table_tmp AS
                select * from table1 
                where time >= '{0} 00:00:00' and timetime<= '{1} 23:59:59'
                and status=1 and some_id in (225,244);
                select*from inter_table_tmp;
                drop table inter_table_tmp;";

    Комментарий разработчика на вопрос "На.уя??":
    "Да от суммы исчислимых резулт не изменится)"

    kargon, 15 Декабря 2015

    Комментарии (0)
  7. SQL / Говнокод #19183

    +3

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    insert into @Res
    select
    'ИК/Уход за волосами' as name,
    (select COUNT(ID) from kb.SMS_SEND_LOG where DateTimeRequest between @DStart and @DEnd and MsgID = 50) as value
    
    insert into @Res
    select
    'ИК/Уход за лицом' as name,
    (select COUNT(ID) from kb.SMS_SEND_LOG where DateTimeRequest between @DStart and @DEnd and MsgID = 51) as value
    
    insert into @Res
    select
    'ИК/Уход за руками-ногами' as name,
    (select COUNT(ID) from kb.SMS_SEND_LOG where DateTimeRequest between @DStart and @DEnd and MsgID = 52) as value
    
    insert into @Res
    select
    'ИК/Уход за телом' as name,
    (select COUNT(ID) from kb.SMS_SEND_LOG where DateTimeRequest between @DStart and @DEnd and MsgID = 53) as value
    
    insert into @Res
    select
    'ИК/Врачебная косметология' as name,
    (select COUNT(ID) from kb.SMS_SEND_LOG where DateTimeRequest between @DStart and @DEnd and MsgID = 54) as value

    Наш ИТ директора нанял толкового парня.
    И так MsgID = 1..56
    226 строк кода.

    joker63, 15 Декабря 2015

    Комментарии (2)
  8. SQL / Говнокод #19091

    0

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    DECLARE @start TIME(0) = '12:00 AM', 
    			@end   TIME(0) =  '11:59 PM';
     SELECT TOP (DATEDIFF(HOUR, @start, @end) + 1) 
    					  rn = ROW_NUMBER() OVER (ORDER BY [object_id]) 
    					  FROM sys.all_columns ORDER BY [object_id]

    а задача была поставлена просто...

    Hill, 26 Ноября 2015

    Комментарии (2)
  9. SQL / Говнокод #19053

    +3

    1. 1
    2. 2
    3. 3
    select ...
     NVL(DSAND || ', ', '')
    from ...

    сидел и дооолго смотрел, а вдруг сбудется?

    OAS_GUEST, 20 Ноября 2015

    Комментарии (14)
  10. SQL / Говнокод #19044

    0

    1. 1
    2. 2
    3. 3
    SELECT ...
    FROM...
    WHERE DATA_EM1 > TO_DATE(TO_CHAR(P_DATA_EM1, 'yyyymmdd') || '000000', 'yyyymmddhh24miss')

    -TRUNC(P_DATA_EM1).... не?
    -А шо так можна?

    OAS_GUEST, 18 Ноября 2015

    Комментарии (16)