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

    −169

    1. 1
    LEFT JOIN ($regions_table LEFT JOIN ($states_table LEFT JOIN

    мы встроили вам лефт джоин в лефт джоин чтобы лефтжоинить лефт джоин...

    xAlz, 02 Декабря 2014

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

    −864

    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
    sResult:= '';
       select  code||' '||h.longname into sResult
            from tbl1 mo, tbl2 ob, g_cli c, tbl3 h
          where mo.m_dep_id = ob.obj_dep_id and mo.m_id = ob.obj_id
              and ob.dep_id = nDepId and ob.id = nId
              and  mo.cli_dep_id = c.dep_id and mo.cli_id = c.id
              and c.id = h.id and c.dep_id = h.dep_id and p_operday between h.FROMDATE and h.TODATE;
             return sResult; 
      exception
        when NO_DATA_FOUND then return null;
        when TOO_MANY_ROWS then          
              for rec in(   select  distinct code as cli_code, h.longname as cli_name 
            from tbl1 mo, tbl2 ob, g_cli c, tbl3 h
          where mo.m_dep_id = ob.obj_dep_id and mo.m_id = ob.obj_id
              and ob.dep_id = nDepId and ob.id = nId
              and  mo.cli_dep_id = c.dep_id and mo.cli_id = c.id
              and c.id = h.id and c.dep_id = h.dep_id and dT between h.FROMDATE and h.TODATE)
                loop
                  if nvl(length(sResult),0) = 0 then
                    sResult:= rec.cli_code||' '||rec.cli_name;
                  else
                    sResult:= sResult||', '||rec.cli_code||' '||rec.cli_name;
                  end if;
                end loop;
                return sResult;   
         when others then return null;

    ColvirBydlokod, 25 Ноября 2014

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

    −863

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    SELECT *
    	FROM session s
    	WHERE s.platform IS NOT NULL
    	GROUP BY s.user_id
    	HAVING MAX(s.open_utc)

    Но хоть можно понять что сказать пытались, и на том спасибо.

    Lowezar, 03 Ноября 2014

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

    −863

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    select top 1 v.Id
       from dbo.Verification v
       where v.ApplicationId = a.Id
        and v.ResultId = 'D69E0B3A-C5CA-42D0-A8CA-FA7FF63BC414'
        and not exists (
         select 1 from Verification vo
         where vo.ApplicationId = v.ApplicationId
          and vo.ResultId = v.ResultId
          and vo.Id != v.Id
          and vo.Position > v.Position
        )

    MS SQL. Видимо, автору не рассказали об order by

    alex123098, 21 Октября 2014

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

    −860

    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
    SELECT 
     iif(isnull((SELECT H_ALL FROM S_KODGR WHERE GR.D1 = S_KODGR.K_KOD)),0,(SELECT H_ALL FROM S_KODGR WHERE GR.D1 = S_KODGR.K_KOD)) +
     iif(isnull((SELECT H_ALL FROM S_KODGR WHERE GR.D2 = S_KODGR.K_KOD)),0,(SELECT H_ALL FROM S_KODGR WHERE GR.D2 = S_KODGR.K_KOD)) +
     iif(isnull((SELECT H_ALL FROM S_KODGR WHERE GR.D3 = S_KODGR.K_KOD)),0,(SELECT H_ALL FROM S_KODGR WHERE GR.D3 = S_KODGR.K_KOD)) +
     iif(isnull((SELECT H_ALL FROM S_KODGR WHERE GR.D4 = S_KODGR.K_KOD)),0,(SELECT H_ALL FROM S_KODGR WHERE GR.D4 = S_KODGR.K_KOD)) +
     iif(isnull((SELECT H_ALL FROM S_KODGR WHERE GR.D5 = S_KODGR.K_KOD)),0,(SELECT H_ALL FROM S_KODGR WHERE GR.D5 = S_KODGR.K_KOD)) +
     iif(isnull((SELECT H_ALL FROM S_KODGR WHERE GR.D6 = S_KODGR.K_KOD)),0,(SELECT H_ALL FROM S_KODGR WHERE GR.D6 = S_KODGR.K_KOD)) +
     iif(isnull((SELECT H_ALL FROM S_KODGR WHERE GR.D7 = S_KODGR.K_KOD)),0,(SELECT H_ALL FROM S_KODGR WHERE GR.D7 = S_KODGR.K_KOD)) +
     iif(isnull((SELECT H_ALL FROM S_KODGR WHERE GR.D8 = S_KODGR.K_KOD)),0,(SELECT H_ALL FROM S_KODGR WHERE GR.D8 = S_KODGR.K_KOD)) +
     iif(isnull((SELECT H_ALL FROM S_KODGR WHERE GR.D9 = S_KODGR.K_KOD)),0,(SELECT H_ALL FROM S_KODGR WHERE GR.D9 = S_KODGR.K_KOD)) +
     iif(isnull((SELECT H_ALL FROM S_KODGR WHERE GR.D10 = S_KODGR.K_KOD)),0,(SELECT H_ALL FROM S_KODGR WHERE GR.D10 = S_KODGR.K_KOD)) +
     iif(isnull((SELECT H_ALL FROM S_KODGR WHERE GR.D11 = S_KODGR.K_KOD)),0,(SELECT H_ALL FROM S_KODGR WHERE GR.D11 = S_KODGR.K_KOD)) +
     iif(isnull((SELECT H_ALL FROM S_KODGR WHERE GR.D12 = S_KODGR.K_KOD)),0,(SELECT H_ALL FROM S_KODGR WHERE GR.D12 = S_KODGR.K_KOD)) +
     iif(isnull((SELECT H_ALL FROM S_KODGR WHERE GR.D13 = S_KODGR.K_KOD)),0,(SELECT H_ALL FROM S_KODGR WHERE GR.D13 = S_KODGR.K_KOD)) +
     iif(isnull((SELECT H_ALL FROM S_KODGR WHERE GR.D14 = S_KODGR.K_KOD)),0,(SELECT H_ALL FROM S_KODGR WHERE GR.D14 = S_KODGR.K_KOD)) +
     iif(isnull((SELECT H_ALL FROM S_KODGR WHERE GR.D15 = S_KODGR.K_KOD)),0,(SELECT H_ALL FROM S_KODGR WHERE GR.D15 = S_KODGR.K_KOD)) +
     iif(isnull((SELECT H_ALL FROM S_KODGR WHERE GR.D16 = S_KODGR.K_KOD)),0,(SELECT H_ALL FROM S_KODGR WHERE GR.D16 = S_KODGR.K_KOD)) +
     iif(isnull((SELECT H_ALL FROM S_KODGR WHERE GR.D17 = S_KODGR.K_KOD)),0,(SELECT H_ALL FROM S_KODGR WHERE GR.D17 = S_KODGR.K_KOD)) +
     iif(isnull((SELECT H_ALL FROM S_KODGR WHERE GR.D18 = S_KODGR.K_KOD)),0,(SELECT H_ALL FROM S_KODGR WHERE GR.D18 = S_KODGR.K_KOD)) +
     iif(isnull((SELECT H_ALL FROM S_KODGR WHERE GR.D19 = S_KODGR.K_KOD)),0,(SELECT H_ALL FROM S_KODGR WHERE GR.D19 = S_KODGR.K_KOD)) +
     iif(isnull((SELECT H_ALL FROM S_KODGR WHERE GR.D20 = S_KODGR.K_KOD)),0,(SELECT H_ALL FROM S_KODGR WHERE GR.D20 = S_KODGR.K_KOD)) +
     iif(isnull((SELECT H_ALL FROM S_KODGR WHERE GR.D21 = S_KODGR.K_KOD)),0,(SELECT H_ALL FROM S_KODGR WHERE GR.D21 = S_KODGR.K_KOD)) +
     iif(isnull((SELECT H_ALL FROM S_KODGR WHERE GR.D22 = S_KODGR.K_KOD)),0,(SELECT H_ALL FROM S_KODGR WHERE GR.D22 = S_KODGR.K_KOD)) +
     iif(isnull((SELECT H_ALL FROM S_KODGR WHERE GR.D23 = S_KODGR.K_KOD)),0,(SELECT H_ALL FROM S_KODGR WHERE GR.D23 = S_KODGR.K_KOD)) +
     iif(isnull((SELECT H_ALL FROM S_KODGR WHERE GR.D24 = S_KODGR.K_KOD)),0,(SELECT H_ALL FROM S_KODGR WHERE GR.D24 = S_KODGR.K_KOD)) +
     iif(isnull((SELECT H_ALL FROM S_KODGR WHERE GR.D25 = S_KODGR.K_KOD)),0,(SELECT H_ALL FROM S_KODGR WHERE GR.D25 = S_KODGR.K_KOD)) +
     iif(isnull((SELECT H_ALL FROM S_KODGR WHERE GR.D26 = S_KODGR.K_KOD)),0,(SELECT H_ALL FROM S_KODGR WHERE GR.D26 = S_KODGR.K_KOD)) +
     iif(isnull((SELECT H_ALL FROM S_KODGR WHERE GR.D27 = S_KODGR.K_KOD)),0,(SELECT H_ALL FROM S_KODGR WHERE GR.D27 = S_KODGR.K_KOD)) +
     iif(isnull((SELECT H_ALL FROM S_KODGR WHERE GR.D28 = S_KODGR.K_KOD)),0,(SELECT H_ALL FROM S_KODGR WHERE GR.D28 = S_KODGR.K_KOD)) +
     iif(isnull((SELECT H_ALL FROM S_KODGR WHERE GR.D29 = S_KODGR.K_KOD)),0,(SELECT H_ALL FROM S_KODGR WHERE GR.D29 = S_KODGR.K_KOD)) +
     iif(isnull((SELECT H_ALL FROM S_KODGR WHERE GR.D30 = S_KODGR.K_KOD)),0,(SELECT H_ALL FROM S_KODGR WHERE GR.D30 = S_KODGR.K_KOD)) +
     iif(isnull((SELECT H_ALL FROM S_KODGR WHERE GR.D31 = S_KODGR.K_KOD)),0,(SELECT H_ALL FROM S_KODGR WHERE GR.D31 = S_KODGR.K_KOD)) AS H_ALL,
    GR.ID_GRAF
    FROM GRAF_RAB AS GR
    WHERE GR.GOD = 2014
    AND GR.K_T_GR = 1

    1) Говеная архитектура БД: В базе месяц лежит в одной таблице с полями D1, D2, D3 и т.д. Потому нельзя просто взять и одним запросом связать две таблицы, а приходится делать 31 подзапрос
    2) Говеня БД: используется access, который не может и шагу ступить без vba. В итоге функция nz, написанная на vba просто не видна OleDbDataAdapter-у и приходится использовать iif. И 31 подзапрос превращается в 62
    3) Надо получить значения из двух полей. 62 подзапроса превращаются в 124(Здесь только одно поле. В проекте код в 2 раза длиннее)

    yrHeTaTeJlb, 17 Октября 2014

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

    −859

    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
    create table test(
      id integer primary key auto_increment,
      d datetime not null
    );
    
    insert into test(id) values (1);
    
    -- а сейчас я покажу вам особую уличную магию
    select *, d is null, d is not null from test;
    
    select *, d is null, d is not null from test
    where d is not null;
    
    select *, d is null, d is not null from test
    where d is null;  -- WTF?!
    
    select *, d is null, d is not null from test
    where d is not null and d is null; -- WTF?!

    Все 4 select'а выводят одинаковый результат... MySQL такой MySQL...

    P.S. Вставка всякой херни вместо вывода ошибки лечится добавлением STRICT_ALL_TABLES в sql_mode. А вот where с нулевой датой не лечится, видимо, это баг движка.

    bormand, 17 Октября 2014

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

    −123

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    l_space   varchar2(100) := '               ';
        l_space_1 varchar2(100) := '                    ';
        l_space_2 varchar2(100) := '                         ';
        l_space_3 varchar2(100) := '                               ';
        l_space_4 varchar2(100) := '                                         ';

    n1919, 13 Октября 2014

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

    −124

    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
    SELECT * FROM (
        SELECT `comments`.`user`,
                       `comments`.`time`,
                       `comments`.`topic`,
                       `comments`.`id` AS `commid`,
                       `topic`.`name`,
                       `topic`.`id`,
                       `topic`.`translit`,
                       `topic`.`blog`,
                       `user`.`login`
        FROM `comments`, `topic`, `user`
        WHERE
        `comments`.`topic` IN (
            SELECT DISTINCT `topic`
            FROM `comments`
            ORDER BY `time` DESC)
            AND `topic`.`id` = `comments`.`topic`
            AND `user`.`id` = `comments`.`user`
            ORDER BY `comments`.`time` DESC
        ) `data`
        GROUP BY `data`.`topic`
        ORDER BY `data`.`time` DESC
        LIMIT 10

    Говнокод или необходимость?
    Не нашел способов сделать это одним запросом.

    Efog, 11 Октября 2014

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

    −120

    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
    CREATE TABLE `numbers` (
      `number` BIGINT(20) DEFAULT NULL
    ) ENGINE=InnoDB;
    
    CREATE TABLE `numbers_small` (
      `number` INT(11) DEFAULT NULL
    ) ENGINE=InnoDB;
    
     -- numbers
    
    INSERT INTO `numbers` (`number`) VALUES('0');
    INSERT INTO `numbers` (`number`) VALUES('1000');
    INSERT INTO `numbers` (`number`) VALUES('2000');
    INSERT INTO `numbers` (`number`) VALUES('3000');
    INSERT INTO `numbers` (`number`) VALUES('4000');
    INSERT INTO `numbers` (`number`) VALUES('5000');
    
    -- 10 000 lines of inserting numbers into table numbers
    -- ...
    INSERT INTO `numbers` (`number`) VALUES('5999');
    INSERT INTO `numbers` (`number`) VALUES('6999');
    INSERT INTO `numbers` (`number`) VALUES('7999');
    INSERT INTO `numbers` (`number`) VALUES('8999');
    INSERT INTO `numbers` (`number`) VALUES('9999');
    
    -- numbers small
    
    INSERT INTO `numbers_small` (`number`) VALUES('0');
    INSERT INTO `numbers_small` (`number`) VALUES('1');
    INSERT INTO `numbers_small` (`number`) VALUES('2');
    INSERT INTO `numbers_small` (`number`) VALUES('3');
    INSERT INTO `numbers_small` (`number`) VALUES('4');
    INSERT INTO `numbers_small` (`number`) VALUES('5');
    INSERT INTO `numbers_small` (`number`) VALUES('6');
    INSERT INTO `numbers_small` (`number`) VALUES('7');
    INSERT INTO `numbers_small` (`number`) VALUES('8');
    INSERT INTO `numbers_small` (`number`) VALUES('9');

    Сделали нам программу на java. Прислали скрипт для обновления базы данных DatabaseUpdateScript.sql на 874 KB.

    ftr, 08 Октября 2014

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

    −118

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    Оригинал
    
    <string name="create_table_report_sms">create table reportSms( id TEXT NOT NULL );</string>
    <string name="create_table_report_sms_pending">create table reportSmsPending( id TEXT NOT NULL, address TEXT, body TEXT, date TEXT );</string>
    
    Перевод
    
    <string name="create_table_report_sms">Создание таблицы отчета( id TEXT NOT NULL );</string>
    <string name="create_table_report_sms_pending">Ожидание создания таблицы отчета( id TEXT NOT NULL, address TEXT, body TEXT, date TEXT );</string>

    Android, сложности перевода.

    donbot, 07 Октября 2014

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