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

    −858

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    FUNCTION get_yesterday
          RETURN DATE
       AS
          dd   VARCHAR2 (2);
          mm   VARCHAR2 (2);
          yy   VARCHAR2 (4);
       BEGIN
          SELECT TO_CHAR (SYSDATE - 1, 'yyyy')
            INTO yy
            FROM DUAL;
       END get_yesterday;

    Вычисляем вчерашнюю дату на PL/SQL

    mshogin, 18 Января 2011

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

    −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
    SELECT
        node.nid AS nid,
        location.latitude AS location_latitude,
        location.longitude AS location_longitude,
        node.title AS node_title,
        node.language AS node_language,
        location.lid AS location_lid,
        (IFNULL(ACOS(0.501284223863*COS(RADIANS(location.latitude))*(0.863228195442*COS(RADIANS(location.longitude)) + 0.504813908876*SIN(RADIANS(location.longitude))) + 0.865282686124*SIN(RADIANS(location.latitude))), 0.00000)*6362105.74365) AS location_distance,
        node_data_field_rate_prior.field_rate_prior_amount AS node_data_field_rate_prior_field_rate_prior_amount,
        node_data_field_rate_prior.field_rate_prior_currency AS node_data_field_rate_prior_field_rate_prior_currency,
        node.type AS node_type, node.vid AS node_vid,
        node_data_field_rate_prior.field_rate_reg_amount AS node_data_field_rate_prior_field_rate_reg_amount,
        node_data_field_rate_prior.field_rate_reg_currency AS node_data_field_rate_prior_field_rate_reg_currency,
        node_data_field_rate_prior.field_rate_vip_amount AS node_data_field_rate_prior_field_rate_vip_amount,
        node_data_field_rate_prior.field_rate_vip_currency AS node_data_field_rate_prior_field_rate_vip_currency
      FROM node node
      LEFT JOIN location_instance location_instance ON node.vid = location_instance.vid
      LEFT JOIN location location ON location_instance.lid = location.lid
      LEFT JOIN content_type_dta_kiosk node_data_field_rate_prior ON node.vid = node_data_field_rate_prior.vid
      WHERE node.type in ('dta_kiosk')
        AND (location.latitude > 40.9991009563 
          AND location.latitude < 59.0008990437 
          AND location.longitude > 5.91311892539 
          AND location.longitude < 34.0868810746
        )
      ORDER BY location_distance ASC

    vectoroc, 14 Января 2011

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

    −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
    "SELECT c.type AS type, 
                                      ELT(c.type, g.genre_id, l.label_id, f.film_id, a.actor_id, s.show_id, ch.channel_id,aw.award_id) AS id,
    				  ELT(c.type, g.value, l.value, f.real_name, a.real_name, s.real_name, ch.name, aw.description) AS real_name,
    				  ELT(c.type, NULL, NULL, f.name, a.name, s.name, NULL, NULL) AS name
    				  FROM connector AS c
    				  LEFT JOIN genres AS g ON (c.second = g.genre_id)
                                      LEFT JOIN labels AS l ON (c.second = l.label_id)
                                      LEFT JOIN films AS f ON (c.second = f.film_id)
                                      LEFT JOIN actors AS a ON (c.second = a.actor_id)
                                      LEFT JOIN shows AS s ON (c.second = s.show_id)
                                      LEFT JOIN channels AS ch ON (c.second = ch.channel_id)
                                      LEFT JOIN awards AS aw ON (c.second = aw.award_id)
                                      WHERE c.first = ".$_SESSION['user_id']

    Вот как это делается!

    Elfet, 14 Января 2011

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

    −853

    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
    billats=# select * from t_month_names order by m_begin desc limit 10;
        month    |  m_begin   |   m_end    
    -------------+------------+------------
     Декабрь 04  | 2004-12-01 | 2004-12-31
     Ноябрь 04   | 2004-11-01 | 2004-11-30
     Октябрь 04  | 2004-10-01 | 2004-10-31
     Сентябрь 04 | 2004-09-01 | 2004-09-30
     Август 04   | 2004-08-01 | 2004-08-31
     Июль 04     | 2004-07-01 | 2004-07-31
     Июнь 04     | 2004-06-01 | 2004-06-30
     Май 04      | 2004-05-01 | 2004-05-31
     Апрель 04   | 2004-04-01 | 2004-04-30
     Март 04     | 2004-03-01 | 2004-03-31

    это не шутка.

    SanityIO, 12 Января 2011

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

    −858

    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
    billats=# select * from lists limit 40;
     type_ |        name        |        value
    -------+--------------------+----------------------
       102 | debt_list_progress | 0
       102 | debt_size          | 0
         5 | 0                  | Тюменьпрофбанк
        10 | 1                  | Физ. лицо
        10 | 2                  | Юр. лицо
        10 | 3                  | Бюджет. орг.
        11 | 0                  | Все группы
        11 | 1                  | Приход. ордер
        11 | 3                  | Расч. счет
        11 | 4                  | Касса
        11 | 6                  | Взаимозачеты
        20 | 1                  | Установка
        20 | 2                  | Ремонт
        20 | 3                  | Задание
        20 | 4                  | Сообщение
        20 | 5                  | Авария
        21 | 1                  | Ген.директор
        21 | 12                 | Дежурный оператор
        21 | 3                  | Гл.бухгалтер
        21 | 5                  | Нач. абон.отдела
        21 | 6                  | Линейщик
        21 | 7                  | Инженер АТС
        21 | 9                  | Кассир
        22 | boss               | 1
        22 | irina              | 3
        22 | serg               | 100
        22 | tanya              | 9
        22 | ugin               | 100
        23 | 001                | сегодня
        23 | 002                | завтра
        23 | 003                | послезавтра
        23 | 010                | на этой неделе
        23 | 011                | 1 неделя
        23 | 012                | 2 недели
        23 | 020                | в этом месяце
        23 | 021                | 1 месяц
        23 | 022                | 2 месяца
        25 | ugin               | [email protected]
        30 | 103                | Прямая линия
        30 | 110                | 2-х мегабитный канал

    Все есть объект.

    SanityIO, 12 Января 2011

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

    −861

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    CREATE FUNCTION "insert_payment" (integer) RETURNS integer AS '                                                                                                                     
    DECLARE                                                                                                                                                                             
            l_payment       integer;                                                                                                                                                    
    BEGIN                                                                                                                                                                               
            INSERT INTO payments (client,type_,pdate,number_)                                                                                                                           
            VALUES ($1,4,current_date,nextval_(''payments_number_1_seq''));                                                                                                             
                                                                                                                                                                                        
            SELECT INTO l_payment last_value FROM payments_id_seq;                                                                                                                      
            RETURN l_payment;                                                                                                                                                           
    END;' LANGUAGE 'plpgsql';

    Функция должна вставлять платеж и возвращать его id.
    Под нагрузкой конечно же 8 строка возвращает нен тот id. (когда несколько параллельных транзакций успевают сделать вставку.)
    Что интересно - возвращаемый функцией id используется другой хранимкой для проставления суммы платежа. И это пости всегда работает :)
    Перл от "отцов основателей".

    SanityIO, 12 Января 2011

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

    −183

    1. 1
    2. 2
    3. 3
    $sql = "DELETE  FROM ".PREFIX."_orders
                WHERE id = '".$order_id."'
    	    ORDER BY order_date DESC";

    1_and_0, 28 Декабря 2010

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

    −188

    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
    UPDATE 
    	phplist_user_user 
    SET 
    	email = (
    		SELECT 
    			Email 
    		FROM 
    			User, phplist_usersubscribers 
    		WHERE 
    			phplist_usersubscribers.userid = User.Id 
    			AND 
    			phplist_usersubscribers.subscribersid = phplist_user_user.id 
    			AND 
    			NOT (Email IS NULL) 
    			LIMIT 1
    			) 
    	WHERE 
    		NOT (
    			(SELECT 
    				id 
    			FROM 
    				phplist_usersubscribers 
    			WHERE 
    				phplist_usersubscribers.subscribersid = phplist_user_user.id 
    			LIMIT 1
    			) IS NULL
    			)

    Вот на такой код наткнулся в корпоративном фреймворке. Стоит ли говорить, что весь запрос был написан в одну строку.

    maghamed, 24 Декабря 2010

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

    −854

    1. 1
    SELECT FROM `girls` WHERE (Age>=18)) AND (Tits size BETWEEN '2' AND '4') AND (Hair color = Blond));

    Вот лазил по Базе Мира решил похимичить ;)

    Akira, 19 Декабря 2010

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

    −188

    1. 1
    2. 2
    3. 3
    exec sp_executesql N'UPDATE [dbo].[sop_user_master]
    SET [user_firstname] = @p0, [user_password_hash] = @p1, [user_password_salt] = @p2
    WHERE 0 = 1',N'@p0 nvarchar(15),@p1 varbinary(32),@p2 varbinary(6)',@p0=N'AFDAasddddddddd',@p1=0xBB8012CAAB306E470D4918B490D7100DC464B5106A291896D045892B5F303309,@p2=0x80DE1E731993

    Вот какой запрос генерирует Linq to SQL)))

    vanished, 17 Декабря 2010

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