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

    −131.6

    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 ct.com_id, cdt.com_name, ct.tax_id, pt.tax_name, tt.date  FROM com_table AS ct LEFT OUTER 
    JOIN com_des_table AS cdt ON cdt.id = ct.com_id LEFT OUTER JOIN payments_table AS pt ON pt.id = 
    ct.tax_id LEFT OUTER JOIN tax_table AS tt ON tt.tax_id = ct.tax_id WHERE ct.tax_id LIKE '001%' and 
    ct.com_id = '1' UNION SELECT ct.com_id, cdt.com_name, ct.tax_id, rt.tax_name, tt.date  FROM com_table 
    AS ct LEFT OUTER JOIN com_des_table AS cdt ON cdt.id = ct.com_id LEFT OUTER JOIN reports_table AS 
    rt ON rt.id = ct.tax_id LEFT OUTER JOIN tax_table AS tt ON tt.tax_id = ct.tax_id WHERE ct.tax_id LIKE 
    '002%' and ct.com_id = '1' UNION SELECT ct.com_id, cdt.com_name, ct.tax_id, pt.tax_name, tt.date  FROM 
    com_table AS ct LEFT OUTER JOIN com_des_table AS cdt ON cdt.id = ct.com_id LEFT OUTER JOIN 
    payments_table AS pt ON pt.id = ct.tax_id LEFT OUTER JOIN tax_table AS tt ON tt.tax_id = ct.tax_id 
    WHERE ct.tax_id LIKE '001%' and ct.com_id = '0' UNION SELECT ct.com_id, cdt.com_name, ct.tax_id, 
    rt.tax_name, tt.date  FROM com_table AS ct LEFT OUTER JOIN com_des_table AS cdt ON cdt.id = ct.com_id 
    LEFT OUTER JOIN reports_table AS rt ON rt.id = ct.tax_id LEFT OUTER JOIN tax_table AS tt ON tt.tax_id = 
    ct.tax_id WHERE ct.tax_id LIKE '002%' and ct.com_id = '0' UNION SELECT ct.com_id, cdt.com_name, 
    ct.tax_id, pt.tax_name, tt.date  FROM com_table AS ct LEFT OUTER JOIN com_des_table AS cdt ON cdt.id = 
    ct.com_id LEFT OUTER JOIN payments_table AS pt ON pt.id = ct.tax_id LEFT OUTER JOIN tax_table AS tt 
    ON tt.tax_id = ct.tax_id WHERE ct.tax_id LIKE '001%' and ct.com_id = '2' UNION SELECT ct.com_id, 
    cdt.com_name, ct.tax_id, rt.tax_name, tt.date  FROM com_table AS ct LEFT OUTER JOIN com_des_table AS 
    cdt ON cdt.id = ct.com_id LEFT OUTER JOIN reports_table AS rt ON rt.id = ct.tax_id LEFT OUTER JOIN 
    tax_table AS tt ON tt.tax_id = ct.tax_id WHERE ct.tax_id LIKE '002%' and ct.com_id = '2' UNION SELECT 
    ct.com_id, cdt.com_name, ct.tax_id, pt.tax_name, tt.date  FROM com_table AS ct LEFT OUTER JOIN 
    com_des_table AS cdt ON cdt.id = ct.com_id LEFT OUTER JOIN payments_table AS pt ON pt.id = ct.tax_id 
    LEFT OUTER JOIN tax_table AS tt ON tt.tax_id = ct.tax_id WHERE ct.tax_id LIKE '001%' and ct.com_id = '3' 
    UNION SELECT ct.com_id, cdt.com_name, ct.tax_id, rt.tax_name, tt.date  FROM com_table AS ct LEFT 
    OUTER JOIN com_des_table AS cdt ON cdt.id = ct.com_id LEFT OUTER JOIN reports_table AS rt ON rt.id = 
    ct.tax_id LEFT OUTER JOIN tax_table AS tt ON tt.tax_id = ct.tax_id WHERE ct.tax_id LIKE '002%' and 
    ct.com_id = '3';

    Не помню, что именно. Вырыл в старом логе. К сожалению из-за местных ограничений по длине кода не удалось выложить подобные портянки длинной в 10 тыщ символов.

    Запостил: Washington, 17 Апреля 2010

    Комментарии (23) RSS

    • Ну что тут сказать... Если только - охтыжебаныйтынахуй оО
      Ответить
      • Мне вот больше что интересно: как получается нецелое число кармы?
        Ответить
        • Сейчас - никак. Это отголоски прошлого, когда не все голоса были равны.
          Ответить
          • Говорят, в 2008-м гости могли голосовать, но сила их голоса была равна одной пятой.
            Ответить
    • вау
      Ответить
    • Может это всё генерилось программно?
      Ответить
      • Я более чем уверен что это так.
        Ответить
      • истинно так, не писать же эту мутоту вручную. особенну ту, что в 12 тыщ с чем то символов. оно генерилось программно и писалось лог, в котором я это нынче вырыл. как я тогда умудрился этот жуть написать - ну ума не приложу.
        Ответить
        • другой вопрос, что там ацки неоптимизированные запросы, в чем и состоит говнокодность. то есть скажем есть у меня список айдишников, и для каждого зачем то делается выборка с условием по айдишнику. хотя в результате можно было выбрать просто все записи. ну как-то так.
          Ответить
    • Кстати тот запрос в 12к символов - вот гляньте:
      http://code.ctrl-v.it/code.php?id=416
      Ответить
    • За что вы так сервер решили наказать?!
      Ответить
    • Ну ниче, на прошлой работе по 16к писали запросики к 3му мускулу, других методов просто не было для формирования отчетов, а гонять кучу данных не решились.
      Ответить
    • Учимся писать опердени -)
      Ответить
    • "К сожалению из-за местных ограничений по длине кода не удалось выложить...."

      И слава Богу.
      Ответить
    • Говно - hibernate или ему подобный движок
      Ответить
    • Офигеть )
      Ответить
    • А из-за "mysql ограничений в 64 join'a" не удалось в полной мере выразить мысль программиста...
      Ответить
    • А что тут не так то?
      Ответить
      • вы 1С не видели что ли? Вот где .....
        Ответить
      • На 18й строчке ощибка, не видно штоле???
        Ответить
        • т.к. эта шняга сгенерирована, то есть основные проблемы
          - за like по tax_id руки бы оторвать
          - да и за union там, где (мне) очевиден union all (а вот оптимизатору - нихуя не очевидно)

          переписанный 1:1 запрос из поста выглядит вот так
          select ct.com_id, cdt.com_name, ct.tax_id, pt.tax_name, tt.date
          from com_table ct
            left outer join com_des_table cdt 
              on (cdt.id = ct.com_id)
            left outer join payments_table pt
              on (pt.id = ct.tax_id)
            left outer join tax_table tt
              on (tt.tax_id = ct.tax_id)
          where (ct.tax_id like '001%' or ct.tax_id like '002%')
            and ct.com_id in ('0', '1', '2', '3')  -- охуенно, когда _id колонка содержит строки, а не чиселки
          Ответить

    Добавить комментарий