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

    −116

    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
    SELECT e1.equip_id, e1.equip_name
    FROM ((SELECT equipment.equip_id, equipment.equip_name
          FROM (((equipment INNER JOIN
               equip_for_eq_deliv ON equipment.equip_id = equip_for_eq_deliv.efs_equip_id) INNER JOIN
               eq_deliv ON equip_for_eq_deliv.efs_eq_deliv_id = eq_deliv.eq_deliv_id) INNER JOIN
               students ON eq_deliv.eq_deliv_stud_id = students.stud_id)
          WHERE (eq_deliv.eq_deliv_operation = 0) AND (students.stud_id = 1)) e1 INNER JOIN
         (SELECT equipment_1.equip_id, equipment_1.equip_name
          FROM (((equipment equipment_1 INNER JOIN
               equip_for_eq_deliv equip_for_eq_deliv_1 ON equipment_1.equip_id = equip_for_eq_deliv_1.efs_equip_id) INNER JOIN
               eq_deliv eq_deliv_1 ON equip_for_eq_deliv_1.efs_eq_deliv_id = eq_deliv_1.eq_deliv_id) INNER JOIN
               students students_1 ON eq_deliv_1.eq_deliv_stud_id = students_1.stud_id)
         WHERE (eq_deliv_1.eq_deliv_operation = 1) AND (students_1.stud_id = 1)) e2 
    WHERE (e1.equip_id = e2.equip_id)

    хорошо что это всего лишь курсач(на тему автоматизация процеса выдачи оборудования студентам на лабы)
    суть сего бреда такова: в таблице выдача оборудования есть поле операция (eq_deliv_operation) которое принимает значения:
    0 - выдача оборудования ситуденту
    1 - возвращение оборудования студентом.

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

    Запостил: lowercase, 14 Мая 2012

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

    • Какой-то инфернальный кабздец. Или ночь уже и спать хочется, или одно из двух, но мозги дымиться начинают.
      Прорекаю плохо построенную схему.
      Ответить
      • так вот и я о том же - всего навсего бд с 4мя таблицами, пару дней мучался пробовал связать и как видно ничерта не получилось :(
        Ответить
    • ехал equip через deliv
      видит equip deliv в deliv
      сунул deliv equip deliv
      equip deliv equip deliv
      Ответить
    • Таблица "Студент" с идентификатором - автоинкрементом
      Таблица "Оборудование" с идентификатором - автоинкрементом
      Таблица "Оборудование в использовании", ссылается на идентификатор студента, на идентификатор оборудования + 2 поля с датами (выдача, возврат).
      Какое оборудование еще не сдано вычисляется элементарным запросом.
      Переделайте структуру в человеческую, не мучайте студентов...
      Ответить
    • Кто его учил так называть поля в таблицах? Я участвовал в проектах с пол-сотней таблиц и как-то обходились без названий полей, состоящих из 4 слов и всё было читабельно. А тут все поля такие. Да ещё и куча сокращений. В смысл кода даже не пытался вникнуть
      Ответить

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