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

    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
    Select count(*) From news WHERE bigblock = 0 AND 
    (
    	(
    		(parent = 30) AND 
    		(
    			(news_onmain = 1) OR (bigblock = 1) OR (news_onmain2 = 1)
    		)
    	)
    ) OR 
    (
    	(
    		parent IN (31,32,33,53,34,46,35)
    	) 
    	OR 
    	(
    		categories REGEXP (31|32|33|53|34|46|35)
    	)
    ) AND date < 1487598228

    Эталон!

    nt1kmd, 20 Февраля 2017

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

    +1

    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
    28. 28
    29. 29
    30. 30
    31. 31
    SELECT main.id, main.post_title AS title,
            t1.meta_value  AS description,
            t2.meta_value  AS after_course,
            t3.meta_value  AS program,
            t4.meta_value  AS claims,
            t5.meta_value  AS num_times,
            t6.meta_value  AS duration,
            t7.meta_value  AS bg_color,
            t8.meta_value  AS cost,
            t9.meta_value  AS discount,
            t10.meta_value AS date1,
            t11.meta_value AS date2,
            t12.meta_value AS date3,
            t13.meta_value AS date4
    FROM wp_posts AS main
    LEFT  JOIN wp_postmeta AS t1  ON t1.post_id  = main.id AND t1.meta_key  = 'Описание'
    LEFT  JOIN wp_postmeta AS t2  ON t2.post_id  = main.id AND t2.meta_key  = 'После курса'
    LEFT  JOIN wp_postmeta AS t3  ON t3.post_id  = main.id AND t3.meta_key  = 'Программа'
    LEFT  JOIN wp_postmeta AS t4  ON t4.post_id  = main.id AND t4.meta_key  = 'Требования'
    LEFT  JOIN wp_postmeta AS t5  ON t5.post_id  = main.id AND t5.meta_key  = 'time'
    LEFT  JOIN wp_postmeta AS t6  ON t6.post_id  = main.id AND t6.meta_key  = 'long'
    LEFT  JOIN wp_postmeta AS t7  ON t7.post_id  = main.id AND t7.meta_key  = 'HEX'
    LEFT  JOIN wp_postmeta AS t8  ON t8.post_id  = main.id AND t8.meta_key  = 'cost'
    LEFT  JOIN wp_postmeta AS t9  ON t9.post_id  = main.id AND t9.meta_key  = 'discont'
    LEFT  JOIN wp_postmeta AS t10 ON t10.post_id = main.id AND t10.meta_key = 'date1'
    LEFT  JOIN wp_postmeta AS t11 ON t11.post_id = main.id AND t11.meta_key = 'date2'
    LEFT  JOIN wp_postmeta AS t12 ON t12.post_id = main.id AND t12.meta_key = 'date3'
    LEFT  JOIN wp_postmeta AS t13 ON t13.post_id = main.id AND t13.meta_key = 'date4'
    INNER JOIN wp_term_relationships ON main.id = wp_term_relationships.object_id
    WHERE wp_term_relationships.term_taxonomy_id = :term_taxonomy_id AND main.post_status = 'publish'
    ORDER BY main.menu_order DESC

    нашел на проекте такой кусочек.

    serek, 16 Февраля 2017

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

    +2

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    with cteTypes (TypeId)
    as (
    			  select 4 
    	union all select 5 
    	union all select 6 
    	union all select 9 
    	union all select 1 			
    ) 
    select *
    from dbo.SomeTable tbl
        cross join ( select TypeId from cteTypes ) t ( TypeId )

    Великолепный CROSS JOIN.
    Не пишите так, можно просто:
    cross join cteTypes
    и все!

    qsmart, 09 Февраля 2017

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

    0

    1. 1
    2. 2
    3. 3
    SELECT g.name, (
    SELECT (SELECT json_agg(b) users FROM (SELECT array_agg(a) result FROM (SELECT u.id, getimage(ARRAY[u.avatar_id]), gu.role FROM sys_users u INNER JOIN groups_users gu ON u.id = gu.user_id AND gu.group_id = g.id) a) b)
    )->0->'result' users FROM groups g WHERE url = 'test'

    Агонь-запрос

    Stefan_Hitskov, 02 Февраля 2017

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

    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
    DROP TABLE cur; 
    create table cur ( 
    id int AUTO_INCREMENT, 
    name varchar(3), 
    value int, 
    data datetime, 
    PRIMARY KEY (id) 
    ); 
    
    insert into cur values 
    (1, 'usd', 30, '20170130'), 
    (2, 'usd', 33, '20170130'), 
    (3, 'eur', 40, '20170130'), 
    (4, 'gbp', 50, '20170130'); 
    
    select * from (select * from cur order by data DESC, id desc) 
    t1 group by name; 
    # работает только на MySQL

    no coments;

    Koshak90, 01 Февраля 2017

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

    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
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    select
    0 as IS_WRK,
    case when DD.DELIVERY_DET_ID is null then 1 else 0 end NW,
    0 as NH,
    round(WO.AMOUNT * AD.PRICE_BASE*100.0/(100.0+AD.NDS), 2)*AMM.CURS*CDS.CURRENCY_KOEF/CDV.CURRENCY_KOEF as SUMM_NO_NDS,
    round(WO.AMOUNT * AD.PRICE_BASE, 2)*AMM.CURS*CDS.CURRENCY_KOEF/CDV.CURRENCY_KOEF as SUMM_VV,
    case 
      when DD.DELIVERY_DET_ID is null
        then 
         ( isnull(round(WO.AMOUNT * A.PRICE_IN *
               (select CURRENCY_KOEF from CURRENCY_DAILY (nolock) where CURRENCY_GROUP_ID =
                  (select CURRENCY_GROUP_ID from CURRENCY_GROUP (nolock) where CURRENCY_DATE =
                     (select max(CURRENCY_DATE) from CURRENCY_GROUP (nolock) where CURRENCY_DATE <= AD.DATE_ACTION)) and CURRENCY_ID = @Currency)
              /
               (select CURRENCY_KOEF from CURRENCY_DAILY (nolock) where CURRENCY_GROUP_ID =
                  (select CURRENCY_GROUP_ID from CURRENCY_GROUP (nolock) where CURRENCY_DATE =
                     (select max(CURRENCY_DATE) from CURRENCY_GROUP (nolock) where CURRENCY_DATE <= AD.DATE_ACTION)) and CURRENCY_ID = A.CURRENCY_ID), 2),0)
          )
       
       else 
         (     /* 08.04.2015 - 4700 BEGIN */
             ISNULL (  round(WO.AMOUNT *case @Currency
               when DM.CURRENCY_ID then  DD.PRICE_NO_NDS
               when @CurrencyBase then DD.PRICE_BASE*(100.0/(100.0+DD.NDS))
               else DD.PRICE_BASE*(100.0/(100.0+DD.NDS))*CDS.CURRENCY_KOEF
            end, 2),  0)  
             /* 08.04.2015 - 4700 END */
          )
       end
      as IN_NO_NDS,
    case 
      when DD.DELIVERY_DET_ID is null
        then 
         ( isnull(round(WO.AMOUNT * A.PRICE_IN *
               (select CURRENCY_KOEF from CURRENCY_DAILY (nolock) where CURRENCY_GROUP_ID =
                  (select CURRENCY_GROUP_ID from CURRENCY_GROUP (nolock) where CURRENCY_DATE =
                     (select max(CURRENCY_DATE) from CURRENCY_GROUP (nolock) where CURRENCY_DATE <= AD.DATE_ACTION)) and CURRENCY_ID = @Currency)
              /
               (select CURRENCY_KOEF from CURRENCY_DAILY (nolock) where CURRENCY_GROUP_ID =
                  (select CURRENCY_GROUP_ID from CURRENCY_GROUP (nolock) where CURRENCY_DATE =
                     (select max(CURRENCY_DATE) from CURRENCY_GROUP (nolock) where CURRENCY_DATE <= AD.DATE_ACTION)) and CURRENCY_ID = A.CURRENCY_ID), 2),0)
          )
       
       else 
         (     /* 08.04.2015 - 4700 BEGIN */
             ISNULL(round(WO.AMOUNT *case @Currency
               when DM.CURRENCY_ID then  DD.PRICE
               when @CurrencyBase then DD.PRICE_BASE
               else DD.PRICE_BASE*(100.0/(100.0+DD.NDS))*CDS.CURRENCY_KOEF
            end, 2), 0) 
              /* 08.04.2015 - 4700 END */
          )
       end
       as IN_VV,
    AD.USER_WRITER as WRITER,
    AD.ACCOUNT_ID
    from ACCOUNT_DETAIL as AD (nolock)
    inner join @AM as AM on AM.ACCOUNT_ID = AD.ACCOUNT_ID
    inner join ARTICLE as A (nolock) on A.ARTICLE_ID = AD.ARTICLE_ID
    left join #_WRITEOUT_TEMP_REST_ as WO on WO.ACCOUNT_DET_ID = AD.ACCOUNT_DET_ID
    left join DELIVERY_DETAIL as DD (nolock) on WO.ROOT_ID = DD.DELIVERY_DET_ID
    left join DELIVERY_MASTER as DM (nolock) on DM.DELIVERY_MST_ID = DD.DELIVERY_MST_ID
    inner join ACCOUNT_MASTER AMM (nolock) on AMM.ACCOUNT_ID=AM.ACCOUNT_ID
    inner join CURRENCY_DAILY CDV (nolock) on ((CDV.CURRENCY_GROUP_ID = AMM.CURRENCY_GROUP_ID)and(CDV.CURRENCY_ID = AMM.CURRENCY_ID))
    inner join CURRENCY_DAILY CDS (nolock) on ((CDS.CURRENCY_GROUP_ID = AMM.CURRENCY_GROUP_ID)and(CDS.CURRENCY_ID = @Currency)) 
    where
    AD.IS_WRITEOUT = 0 and AD.OUT = 1
    and (@Articles = '' and @ArticleGroups = '' or charindex(',' + convert(varchar, A.ARTICLE_ID) + ',', @Articles) > 0
    or charindex(',' + convert(varchar, A.GROUP_ID) + ',', @ArticleGroups) > 0)

    Xzibit.jpg

    tucvbif, 01 Февраля 2017

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

    −1

    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
    CREATE OR REPLACE VIEW LOAD_PROMOTIONCATEGORY
    AS
    SELECT
     ROW_NUMBER() OVER (ORDER BY CATEGORY_NAME,SUBCATEGORYNAME ASC) AS PROMOTIONCATEGORYID
    , CATEGORY_NAME
    , SUBCATEGORYNAME
    FROM
    (
    SELECT
    DISTINCT
     PROMO_CATEGORY AS CATEGORY_NAME
    , PROMO_SUBCATEGORY AS SUBCATEGORYNAME
    FROM
    LIY26.LI_PROMOTIONS
    ) PROMO

    Правда, я впервые вижу такую расстановку строк... Сколько не пытаюсь понять ее логику — нифига.

    morpheby, 16 Декабря 2016

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

    +1

    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
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    SELECT NVL(ГРУППЫ.НГ, 'ИТОГО') "ГРУППА", DECODE(GROUPING(ГРУППЫ.НГ), 0, AVG(ГРУППЫ.КОЛВО),
                                                                         1, (SELECT COUNT(НОМЕР_СТУДЕНТА) FROM СТУДЕНТ)) "КОЛ-ВО СТУДЕНТОВ", 
          DECODE(GROUPING(ГРУППЫ.НГ), 0, ГРУППЫ.НАЗВ_НАП,
                                      1, (SELECT LISTAGG(НАЗВАНИЕ_НАПРАВЛЕНИЯ, ', ') 
                                              WITHIN GROUP (ORDER BY НАЗВАНИЕ_НАПРАВЛЕНИЯ)
                                          FROM НАПРАВЛЕНИЕ
                                          WHERE КОД_НАПРАВЛЕНИЯ IN (SELECT КОД_НАПРАВЛЕНИЯ
                                                                    FROM ГРУППА))) "НАЗВАНИЕ СПЕЦИАЛЬНОСТИ", 
          COUNT(НОМ_СТУД)"КОЛ-ВО КРУГЛЫХ ОТЛИЧНИКОВ", 
       NVL(LISTAGG(ФАМ, ', ') WITHIN GROUP (ORDER BY ФАМ), ' ') "ФАМИЛИИ ОТЛИЧНИКОВ" 
    FROM                              
        (SELECT COUNT(*) КОЛВО, СТ.НОМЕР_ГРУППЫ НГ, НАП.НАЗВАНИЕ_НАПРАВЛЕНИЯ НАЗВ_НАП 
                          FROM СТУДЕНТ СТ LEFT OUTER JOIN                             
                                ГРУППА ГР ON СТ.НОМЕР_ГРУППЫ=ГР.НОМЕР_ГРУППЫ
                                LEFT OUTER JOIN НАПРАВЛЕНИЕ НАП ON НАП.КОД_НАПРАВЛЕНИЯ=ГР.КОД_НАПРАВЛЕНИЯ
                          GROUP BY СТ.НОМЕР_ГРУППЫ, НАП.НАЗВАНИЕ_НАПРАВЛЕНИЯ) ГРУППЫ
                      
    LEFT OUTER JOIN
        (SELECT СТ.НОМЕР_СТУДЕНТА НОМ_СТУД, СТ.НОМЕР_ГРУППЫ НОМ_ГРУП, НГ.КОД_НАПРАВЛЕНИЯ КОД_НАПР, СТ.ФАМИЛИЯ ФАМ, 5 СРЕД_ОЦЕНКА
        FROM СТУДЕНТ СТ INNER JOIN ГРУППА НГ ON СТ.НОМЕР_ГРУППЫ=НГ.НОМЕР_ГРУППЫ
                                    LEFT JOIN УЧЕБНЫЙ_ПЛАН УП ON НГ.КОД_НАПРАВЛЕНИЯ=УП.КОД_НАПРАВЛЕНИЯ
                                    LEFT JOIN УСПЕВАЕМОСТЬ УСП ON УСП.НОМЕР_СТУДЕНТА=СТ.НОМЕР_СТУДЕНТА AND УСП.НОМЕР_ДИСЦИПЛИНЫ=УП.НОМЕР_ДИСЦИПЛИНЫ       
        INTERSECT
        --ТАБЛИЦА "ПЕРВ"
        SELECT ВТОР.НОМЕР_СТУДЕНТА, ВТОР.Н_Г, ВТОР.КОД_НАПР, ВТОР.ФАМ, ВТОР.СРЕД_ОЦЕНКА 
        FROM  
            (SELECT КОД_НАПРАВЛЕНИЯ, COUNT(НОМЕР_ДИСЦИПЛИНЫ) CNT
            FROM УЧЕБНЫЙ_ПЛАН
            GROUP BY КОД_НАПРАВЛЕНИЯ) ПЕРВ
        INNER JOIN
        (SELECT НОМЕР_СТУДЕНТА, КОД_НАПР, Н_Г, ФАМ, COUNT(НОМ_ДИСЦИП) CNT, AVG(ОЦЕН) СРЕД_ОЦЕНКА
        FROM  
            (SELECT СТ.НОМЕР_СТУДЕНТА, ГР.НОМЕР_ГРУППЫ Н_Г, СТ.ФАМИЛИЯ ФАМ, УП.КОД_НАПРАВЛЕНИЯ КОД_НАПР, УС.НОМЕР_ДИСЦИПЛИНЫ НОМ_ДИСЦИП, УС.ОЦЕНКА ОЦЕН
            FROM УСПЕВАЕМОСТЬ УС INNER JOIN СТУДЕНТ СТ ON УС.НОМЕР_СТУДЕНТА=СТ.НОМЕР_СТУДЕНТА
                                LEFT OUTER JOIN ГРУППА ГР ON СТ.НОМЕР_ГРУППЫ=ГР.НОМЕР_ГРУППЫ
                                LEFT OUTER JOIN УЧЕБНЫЙ_ПЛАН УП ON ГР.КОД_НАПРАВЛЕНИЯ=УП.КОД_НАПРАВЛЕНИЯ AND УП.НОМЕР_ДИСЦИПЛИНЫ=УС.НОМЕР_ДИСЦИПЛИНЫ )
            INNER JOIN УЧЕБНЫЙ_ПЛАН УП2 ON УП2.КОД_НАПРАВЛЕНИЯ=КОД_НАПР AND УП2.НОМЕР_ДИСЦИПЛИНЫ=НОМ_ДИСЦИП
        GROUP BY НОМЕР_СТУДЕНТА, КОД_НАПР, Н_Г, ФАМ) ВТОР
        ON ПЕРВ.КОД_НАПРАВЛЕНИЯ=ВТОР.КОД_НАПР AND ПЕРВ.CNT=ВТОР.CNT ) ОТЛ
    ON ГРУППЫ.НГ=ОТЛ.НОМ_ГРУП
    GROUP BY GROUPING SETS((ГРУППЫ.НГ, ГРУППЫ.НАЗВ_НАП),());

    ilgsha, 06 Декабря 2016

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

    −2

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    --Проверка существования контракта
        select con.id_column
          into l_id
          from contract con
         where con.dt_start <= pDATE
           and con.dt_stop > pDATE;
    
        if l_id is null  then
          raise_application_error(-20000,
                                  'Ошибка поиска контракта на дату' || pDATE);
        end if;

    Блок pl sql, ищет контракт на указанную данную. Но результат всегда будет либо idl, либо no_data_found. Но проверок много не бывает :)

    myxolod, 30 Ноября 2016

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

    +2

    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
    28. 28
    29. 29
    30. 30
    SELECT `hours`.`hour` as `h` ,SUM(IF(HOUR(`i`.`time`)=`hours`.`hour`,1,0)) as `count`
            FROM `table_name` i
             INNER JOIN (SELECT 0 `hour`
                 UNION ALL SELECT 1
                 UNION ALL SELECT 2
                 UNION ALL SELECT 3
                 UNION ALL SELECT 4
                 UNION ALL SELECT 5
                 UNION ALL SELECT 6
                 UNION ALL SELECT 7
                 UNION ALL SELECT 8
                 UNION ALL SELECT 9
                 UNION ALL SELECT 10
                 UNION ALL SELECT 11
                 UNION ALL SELECT 12
                 UNION ALL SELECT 13
                 UNION ALL SELECT 14
                 UNION ALL SELECT 15
                 UNION ALL SELECT 16
                 UNION ALL SELECT 17
                 UNION ALL SELECT 18
                 UNION ALL SELECT 19
                 UNION ALL SELECT 20
                 UNION ALL SELECT 21
                 UNION ALL SELECT 22
                 UNION ALL SELECT 23) `hours`
     	 	 WHERE `service_id`= SOME_SERVICE_ID
                        AND `date` BETWEEN STR_TO_DATE(SOME_DATE, '%Y-%m-%d ')
    							      AND  STR_TO_DATE(SOME_DATE, '%Y-%m-%d ')
             GROUP BY `hours`.`hour`

    Объединений много не бывает...

    fens, 17 Ноября 2016

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