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

    +15

    1. 1
    id INT(10)

    Десятка для базы вещей Steam предметов

    valmus, 02 Июня 2016

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

    +9

    1. 1
    (CASE WHEN "order".payment_type = 1 AND payed = 0 THEN 0 ELSE 1 END) = 1

    Одно из индусских условий в WHERE. Выражение вполне можно сократить до такого:

    ("order".payment_type <> 1 OR payed > 0)
    или такого:
    NOT ("order".payment_type = 1 AND payed = 0)

    jbot, 31 Мая 2016

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

    +21

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    SELECT AVG(sell) 
    FROM table_name
    WHERE id IN (
      SELECT id
      FROM table_name
      WHERE /* тут какое-то большое условие */
      ORDER BY day
    )

    Настоящий индус

    jbot, 30 Мая 2016

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

    +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
    Declare
    alph Varchar2(26)   := 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
    ch   Varchar2(1);
    
    Begin
        dbms_output.put_line('Starting search: ' || srch);
        For i In 1..26 Loop
            
        Select Substr(alph,i,1) Into ch From dual;
    
            with 
              v_tab_col as (
            Select '"' || c.Table_Name || '"' As Table_Name,
                   '"' || c.Column_Name || '"' As Column_Name,
                   '"' || c.Owner || '"' As Owner,
                   Row_Number() Over(Partition By c.Owner, c.Table_Name Order By c.Column_Id) As Rn
              From Dba_Tab_Columns c, Dba_Objects o
            Where Data_Type In ('CHAR', 'VARCHAR2')
               And c.Table_Name = o.Object_Name
               And o.Object_Type = 'TABLE'
               And o.Owner = c.Owner
               And o.object_name Like ch || '%' -- checking by letter

    Циклическая выборка таблиц, начинающихся на букву алфавита, в каждом следующем прогоне берется следующая.

    eggman, 26 Мая 2016

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

    +2

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    (
            SELECT IFNULL(
              (
                IFNULL((SELECT SUM(`sale`.`credited`) FROM `sale` WHERE `sale`.`client_id` = `user`.`id` ), 0)
                -
                IFNULL((SELECT SUM(`sale`.`shot`) FROM `sale` WHERE `sale`.`client_id` = `user`.`id` ), 0)
                ), 0)
    )

    Супер подсчет.

    govnokoderphp, 09 Мая 2016

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

    +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
    SELECT 'январь' mes, a.datogt, gr.date_ogt datogt_, a.id_grafik,
               a.date_ogt dat_zam, 0 pr_zam, TO_CHAR(gr.date_ogt, 'DD') dat_zam_,
               0 pr_zam_, a.date_inp dat_nach, 0 pr_nach,
               TO_CHAR(gr.date_inp, 'DD') dat_nach_, 0 pr_nach_
          FROM (SELECT id_grafik, TO_CHAR(date_inp, 'DD') date_inp,
                        TO_CHAR(date_ogt, 'DD') date_ogt, date_ogt datogt, god,
                        TO_CHAR(date_ogt, 'MM') mon
                   FROM protokol p
                  WHERE god = p_god
                    AND TO_NUMBER(TO_CHAR(date_inp, 'MM')) = 01
                    AND pr_protokol = 1
                    AND flag_a = 1) a
         INNER JOIN protokol gr
            ON gr.god = a.god
           AND TO_CHAR(gr.date_ogt, 'mm') = a.mon
           AND gr.pr_protokol = 2
           AND flag_a = 1

    И так 12 раз от января до декабря

    raupe, 20 Апреля 2016

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

    −1

    1. 1
    2. 2
    3. 3
    4. 4
    ALTER TABLE info ADD COLUMN temp date;
    UPDATE info SET temp=b_date;
    ALTER TABLE info DROP COLUMN b_date;
    ALTER TABLE info RENAME COLUMN temp TO b_date;

    это чтоб b_date было в конце...

    pl7ofit, 27 Марта 2016

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

    +1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    if regexp_instr( str, '00' ) = 1  then
    ...
    end if;
    ......
    if  length( str ) = 5 and not regexp_like( str, '[^0]') then
    ......
    end if;

    kocmoc, 22 Марта 2016

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

    +2

    1. 1
    if  res > 0 or res < 0 then  raise   err_code_2; end if;

    PL/SQL, кусок хранимой процедуры в БД очень крупного оператора связи.

    Shadowbearer, 17 Марта 2016

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

    +2

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    SELECT DISTINCT pr_zak   INTO v_prizn
    FROM ceh_in.book_inp
    WHERE zakaz_wsp = v_zak
    AND uz = v_uz
    AND nws = v_nws
    AND pr_zak = p_pr;

    угадайте, что тут не так?

    hovak, 17 Марта 2016

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