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

    −873

    1. 1
    SELECT users.nick,group.name FROM users,group WHERE user.id='$id' AND group.id=user.group;

    Это мой код. Мне сказали что это говнокод, и порекомендовали спросить здесь.
    В чём именно говнокодость, и как надо писать правильно?

    avamana, 13 Июня 2010

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

    −852

    1. 1
    2. 2
    3. 3
    4. 4
    [CompanyName] text null, 
    [Address] text null, 
    
    [Comment] varchar(255),

    Вот такая оригинальная архитектура таблицы БД :-)

    progr@mer, 08 Июня 2010

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

    −862

    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
    -- находим текущий месяц
    FOR rec IN 
    	SELECT date_part ('month', now()) as ma, date_part ('year', now()) as ya 
    LOOP
    	m1 = rec.ma-1;
    	IF m1=0 THEN m1=12; END IF;
    	Y1 = rec.ya;
    	IF m1=12 THEN Y1 = rec.ya - 1; END IF;
    END LOOP;
    
    FOR rec IN 
    	SELECT count(v.partner_id) as cnt  
    		FROM  v, a where v.id=a.id  and period like '%'||m1||'-'||Y1||' по%' and accepted = 1 and active=1 
    LOOP
    -- вырезано
    -- а десятком строк ниже
    -- находим предыдущие 3 месяца 
    m2 = m1 - 1;	
    IF  m2 = 0 THEN m2 = 12; END IF;
    IF m1<m2  THEN Y2 = Y1 - 1; ELSE Y2 = Y1; END IF;
    m3 = m2 - 1;
    IF m3 = 0 THEN m3 = 12; END IF;
    IF m2<m3 THEN Y3 = Y2 - 1; ELSE Y3 = Y2; END IF;
    m4 = m3 - 1;
    IF  m4 = 0 THEN m4 = 12; END IF;
    IF m3<m4 THEN Y4 = Y3 - 1; ELSE Y4 = Y3; END IF;

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

    qnikst, 03 Июня 2010

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

    −163

    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
    $SQL            =  "SELECT rq.*, c.login, r.name as raceName,                                                                                                                                                                   
        IF(rq.status = 1, '<span style=\'color:green\'>".$this->kernel->msg->get('raceRequest.status.done')."</span>',                                                                          
            IF(rq.status = -1, '<span style=\'color:red\'>".$this->kernel->msg->get('raceRequest.status.cancel')."</span>',                                                                 
                '".$this->kernel->msg->get('raceRequest.status.request')."')) as statusMsg,                                                                                             
        IF(rq.currentLevel = 1, '<span style=\'color:#eeb300\'>".$this->kernel->msg->get('raceRequest.level.gold')."</span>',                                                                   
            IF(rq.currentLevel = 2, '<span style=\'color:#c6cccd\'>".$this->kernel->msg->get('raceRequest.level.silver')."</span>',                                                         
                '<span style=\'color:#d58b72\'>".$this->kernel->msg->get('raceRequest.level.bronzet')."</span>')) as currentLevelMsg,                                                   
        IF(rq.requestLevel = 1, '<span style=\'color:#eeb300\'>".$this->kernel->msg->get('raceRequest.level.gold')."</span>',                                                                   
            IF(rq.requestLevel = 2, '<span style=\'color:#c6cccd\'>".$this->kernel->msg->get('raceRequest.level.silver')."</span>',                                                         
                '<span style=\'color:#d58b72\'>".$this->kernel->msg->get('raceRequest.level.bronzet')."</span>')) as requestLevelMsg                                                    
        FROM raceRequests rq                                                                                                                                                                            
        LEFT JOIN customers c ON c.ID = rq.customerID                                                                                                                                                   
        LEFT JOIN races r ON r.ID = rq.raceID                                                                                                                                                           
        WHERE rq.ID = '%ID'";

    Формирование HTML с помощью SQL

    blaster999, 01 Июня 2010

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

    −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
    errnum := 0;
    if (bitand(err, 1) != 0) then
    	errnum := -20027;
    end if;
    
    if (bitand(err, 2) != 0) then
    	if (errnum = 0) then
    		errnum := -20028;
    	else 
    		errnum := -20029;
    	end if;
    end if;

    Это PL/SQL
    Это мой первый вариант, я заменил его потом на этот, в одну строку:
    errnum := -20026 - (bitand(err, 1) + bitand(err, 2));

    Oleg_quadro_, 01 Июня 2010

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

    −854

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    Select  *
    From Table1
    Where ( 
                   (id = 2000)
                        or
                    id = ( Select max(id) from Table1 )
                  )

    а я дивувався, чому цей код в табличці > 300 000 записів виконується так довго ...

    O_O, 26 Мая 2010

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

    −855

    1. 1
    2. 2
    3. 3
    4. 4
    where 
      DEP_ID = idDep and  ID = idOrd and  
      DEP_ID = idDep and  ID = idOrd and  
      DEP_ID = idDep and  ID = idOrd

    gorsash, 17 Мая 2010

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

    −150

    1. 1
    2. 2
    3. 3
    4. 4
    SELECT s.id, ( SELECT russianName FROM table2 WHERE countryId=s.region1 ) AS name1,
    ( SELECT russianName FROM table2 WHERE countryId=s.region2 ) AS name2,
    ( SELECT russianName FROM table2 WHERE countryId=s.region3 ) AS name3
    FROM table1 s LEFT JOIN table2 c WHERE s.countryId = xxx

    так мы пытаемся джойнить

    fih, 01 Мая 2010

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

    −863

    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
    SELECT 
        SQL_CALC_FOUND_ROWS id, 
        autor, 
    ...бла, бла, бла, ищо штук 15 дефолтных полей...
        tags, 
        perem_1, 
        perem_2, 
        perem_3, 
        perem_4, 
        perem_5, 
        perem_6, 
        perem_7, 
        perem_8, 
        perem_9, 
        perem_10, 
        perem_11, 
        perem_12, 
        perem_13, 
        perem_14, 
        perem_15, 
        perem_16, 
        perem_17, 
        perem_18, 
        perem_19, 
        perem_20, 
        perem_21, 
        perem_22, 
        poster, 
        screenshot_1, 
        screenshot_2, 
        screenshot_3, 
        screenshot_4
    FROM dle_post
    WHERE approve
    AND allow_main
    AND date < '2010-04-26 04:00:01'
    ORDER BY FIXED DESC , date DESC 
    LIMIT 0 , 6

    помните дети, долгое^W употребление LSD^W DLE вредит вашему здоровью
    ДЛЕ не способен разделять данные в разделах (видио: разрешение, длительность и тп.; игры: жанр, таблетка, сис.требования и тд...) и вот таким изящным способом дети употреблявшие LSD^W DLE решили свою проблему

    DrFreez, 25 Апреля 2010

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

    −856.6

    1. 1
    select to_date(to_char(date_field, 'DD.MM.YYYY'), 'DD.MM.YYYY') from dual

    Смысл операция имеет, но есть способы и попроще :)

    guеst, 18 Апреля 2010

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