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

    −164

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    create procedure PVN_CNV_DATE (
        DATUMS varchar(28))
    returns (
        RDATUMS date)
    AS
    begin
     datums=rdatums;
     when any do exit;
    end

    Очередной перл предшественника. cast as date? Не, не видал..

    N21, 19 Сентября 2012

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

    −166

    1. 1
    select r.nID as id, d.nId as id from Tm_Region as r join Tm_Direction as d where d.strName = r.strName and d.nDepth = 2 and d.nInternational = 1;

    ответ обрабатывается в Java через "forName", так что "as *" стоит спец...сначала все было норм, потом чуть по переименовывал...минут 10 искал эту ошибку

    Dougrinch, 18 Сентября 2012

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

    −160

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    QString query4="INSERT INTO `"+mb+"`.`cubes` (`user_id`, `name`) VALUES (0, '"+name+"')";
    mysql.sqlQuery(query4, true);
    mysql.sqlQuery("SELECT * FROM `"+mb+"`.`cubes` WHERE name='"+name+"' AND user_id="+QString::number(userID), true);
    mysql.data_connection_bind(true);
    mysql.getRow();
    int id=mysql.getUint32(o);
    mysql.sqlQuery("UPDATE `"+mb+"`.`cubes` SET user_id=1 WHERE user_id="+QString::number(userID), true);
    mysql.sqlQuery("DELETE FROM `"+mb+"`.`users` WHERE `name`="+QString::number(getpid()), true);
    qDebug()<<"CubeID"<<id;

    Судя по словам автора: он не осилил lastInsertId, поэтому пытался вставить запись с заранее не существующим user_id, чтобы затем однозначно извлеч эту строку и получить уже долгожданое поле id.

    Try, 13 Сентября 2012

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

    −158

    1. 1
    2. 2
    3. 3
    4. 4
    SELECT ft_login,fi_system,ft_password,fk_id
    FROM users u
    INNER JOIN taccountscontent t ON u.id = t.fk_id
    WHERE u.id IN (select id from users where id=123)

    Оригинал http://www.askdev.ru/question/16663/%D0%97%D0%B0%D0%BF%D1%80%D0%BE%D1%81-%D0%BA-%D0%91%D0%94-%D0%B8-%D1%86%D0%B8%D0%BA%D0%BB-While/

    et, 13 Сентября 2012

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

    −161

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    if (IDATUMS is null) then
        begin
            suspend;
            exit;
            REZULT = "Nevar importet gramatojumu id:" || :NOMER_DOC;
            execute procedure TSEND_ERROR(:REZULT);
        end

    Гениальнейшая PSQL-конструкция в СУБД Firebird. Автор, видимо, не в курсе, что после EXIT процедура больше не выполняется :]

    N21, 13 Сентября 2012

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

    −160

    1. 1
    SELECT count(*) as count FROM wz_vacancy WHERE action='1'   and TO_DAYS(NOW()) - TO_DAYS(date) = '0';

    * индекс только по primary key - id
    * Оригинальный способ выборки сегодняшних объектов :) особенно, когда можно подставить конкретные даты еще в коде программы.

    scorcher, 19 Августа 2012

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

    −134

    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
    SELECT     ISNULL(SUM(dbo.colors.setup_time_base + dbo.colors.setup_time_add), 0) AS setup_time, ISNULL(SUM(dbo.colors.setup_time_base), 0) AS setup_time_base, 
                          ISNULL(SUM(dbo.colors.setup_time_add), 0) AS setup_time_add, ISNULL(SUM(dbo.colors.setup_length_base), 0) + 40 AS setup_lenght_base, 
                          ISNULL(SUM(dbo.colors.setup_lenght_add), 0) AS setup_lenght_add, ISNULL(SUM(dbo.colors.setup_length_base + dbo.colors.setup_lenght_add), 0) 
                          + 40 AS setup_lenght, ISNULL(COUNT(dbo.dir_order_sections.color_id), 0) AS section_count, CASE WHEN COUNT(dbo.dir_order_sections.color_id) 
                          = 0 THEN 0.5 WHEN COUNT(dbo.dir_order_sections.color_id) >= 1 AND COUNT(dbo.dir_order_sections.color_id) 
                          <= 2 THEN 0.65 WHEN COUNT(dbo.dir_order_sections.color_id) >= 3 AND COUNT(dbo.dir_order_sections.color_id) 
                          <= 6 THEN 1 WHEN COUNT(dbo.dir_order_sections.color_id) >= 7 AND COUNT(dbo.dir_order_sections.color_id) 
                          <= 10 THEN 1.15 WHEN COUNT(dbo.dir_order_sections.color_id) >= 11 THEN 1.3 ELSE 0 END AS section_rate, CASE WHEN COUNT(dbo.dir_order_sections.color_id) 
                          = 0 THEN 0.03 WHEN COUNT(dbo.dir_order_sections.color_id) >= 1 AND COUNT(dbo.dir_order_sections.color_id) 
                          <= 2 THEN 0.04 WHEN COUNT(dbo.dir_order_sections.color_id) >= 3 AND COUNT(dbo.dir_order_sections.color_id) 
                          <= 7 THEN 0.05 WHEN COUNT(dbo.dir_order_sections.color_id) >= 8 AND COUNT(dbo.dir_order_sections.color_id) 
                          <= 10 THEN 0.07 WHEN COUNT(dbo.dir_order_sections.color_id) >= 11 THEN 0.07 ELSE 0 END AS role_rate, CASE WHEN COUNT(dbo.dir_order_sections.color_id) 
                          = 0 THEN 0.03 WHEN COUNT(dbo.dir_order_sections.color_id) >= 1 AND COUNT(dbo.dir_order_sections.color_id) 
                          <= 2 THEN 0.04 WHEN COUNT(dbo.dir_order_sections.color_id) >= 3 AND COUNT(dbo.dir_order_sections.color_id) 
                          <= 7 THEN 0.05 WHEN COUNT(dbo.dir_order_sections.color_id) >= 8 AND COUNT(dbo.dir_order_sections.color_id) 
                          <= 10 THEN 0.07 WHEN COUNT(dbo.dir_order_sections.color_id) >= 11 THEN 0.07 ELSE 0 END AS role_shift_rate_base, ISNULL(SUM(dbo.colors.role_shift_rate_add), 
                          0) + CASE WHEN COUNT(dbo.dir_order_sections.color_id) = 0 THEN 0.03 WHEN COUNT(dbo.dir_order_sections.color_id) >= 1 AND 
                          COUNT(dbo.dir_order_sections.color_id) <= 2 THEN 0.04 WHEN COUNT(dbo.dir_order_sections.color_id) >= 3 AND COUNT(dbo.dir_order_sections.color_id) 
                          <= 7 THEN 0.05 WHEN COUNT(dbo.dir_order_sections.color_id) >= 8 AND COUNT(dbo.dir_order_sections.color_id) 
                          <= 9 THEN 0.06 WHEN COUNT(dbo.dir_order_sections.color_id) >= 10 THEN 0.07 ELSE 0 END AS role_shift_rate, dbo.orders.order_n
    FROM         dbo.orders LEFT OUTER JOIN
                          dbo.dir_order_sections ON dbo.dir_order_sections.order_n = dbo.orders.order_n AND dbo.dir_order_sections.color_id <> 0 AND 
                          dbo.dir_order_sections.color_id IS NOT NULL LEFT OUTER JOIN
                          dbo.colors ON dbo.dir_order_sections.color_id = dbo.colors.color_id
    GROUP BY dbo.orders.order_n

    someone, 15 Июля 2012

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

    −116

    1. 1
    2. 2
    DECLARE @SysDatoFull datetime
    SET @SysDatoFull = CAST(YEAR(getdate()) as varchar) + RIGHT('00'+CAST(MONTH(getdate()) as varchar), 2) + RIGHT('00'+CAST(DAY(getdate()) as varchar), 2)

    SQL, даты... nuff said
    Вспомнился http://govnokod.ru/9211. Может есть где-то специальное учебное заведение, где обучают таким техникам?

    DBdev, 12 Июля 2012

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

    −122

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    exec @res = dbo.p_bis_prepaid_diagnostic @tar_addr, @req_dubug_info output
      
    if (@res = 0)
      set @res = 1
    else
      set @res = 0

    aloha, 07 Июля 2012

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

    −119

    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
    select a, trim(both ',' from max(SYS_CONNECT_BY_PATH(b, ',')))bb from (
      select count(1) over (partition by a order by /* Важно:*/ a,b /*!*/)rn, a, b from (
    
        select a, b from (
          select 1 a, 'a' b from dual union all
          select 1 a, 'b' b from dual union all
          select 2 a, 'c' b from dual union all
          select 2 a, 'd' b from dual union all
          select 2 a, 'e' b from dual union all
          select 3 a, 'f' b from dual
        ) order by dbms_random.value
    
      )
    )
    start with rn=1 connect by nocycle prior a=a and prior rn+1=rn
    group by a;

    Задача на агрегацию с конкатенацией строк. Можно решить правильно - через свой агрегирующий объект, а можно так, "не по правилам" ))

    RomaShka, 20 Июня 2012

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