mysql_real_escape_string / Говнокод #13760 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
//В рот мне ноги!
SELECT A.id, MAX(B.date) FROM helpdesk_reference as A
JOIN helpdesk_data as B on B.reference_id = A.id and B.date < DATE_SUB(NOW(), INTERVAL 7 DAY) and B.read = 1
JOIN det1order as C on C.orderdate = order_date and C.ordernum = `order` and A.code = C.code and A.ch = C.ch
JOIN det1order as D ON D.orderdate = order_date and D.ordernum = `order` and A.code = D.code and A.ch = D.ch and C.num = -D.num
WHERE status = 3 and acl_id = 4
GROUP BY A.id
UNION ALL (
    SELECT A.id, MAX(B.date)
    FROM helpdesk_reference as A
    JOIN helpdesk_data  as B ON B.reference_id = A.id and B.date < DATE_SUB(NOW(), INTERVAL 7 DAY) and B.read = 1
    JOIN det1order as C ON  `order` = ordernum and order_date = orderdate and C.code = A.code and A.ch = C.ch and A.user = C.user
    WHERE acl_id IN(3, 4) and status = 3 and num = realized
    GROUP BY A.id
);

=(

Запостил: heyzea1 heyzea1, (Updated )

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

  • SELECT
            IF(parent_user, CONCAT(parent_user, '(', helpdesk_reference.user, ')'), helpdesk_reference.user) as user,
            IF(name, name, detuser1c.title) as title, description, helpdesk_reference.id,
            helpdesk_reference.status, helpdesk_reference.direction, helpdesk_reference.importance,
            helpdesk_reference.order, helpdesk_reference.code,      helpdesk_reference.ch, helpdesk_reference.manager_from_1C,
            (
                    SELECT date FROM helpdesk_data
                    WHERE helpdesk_data.reference_id = helpdesk_reference.id
                    ORDER BY date LIMIT 1
            ) as date,
            (
                    SELECT count(id) FROM helpdesk_data
                    WHERE
                            helpdesk_data.reference_id = helpdesk_reference.id AND
                            helpdesk_data.user_id = helpdesk_reference.user AND
                            NOT `read`
            ) as unread
            FROM helpdesk_reference
            LEFT JOIN helpdesk_acl_description ON helpdesk_acl_description.acl_id = helpdesk_reference.acl_id
            LEFT JOIN guestprofiles ON helpdesk_reference.user = guestprofiles.user
            LEFT JOIN detuser1c ON  IF(parent_user, parent_user, helpdesk_reference.user) = detuser1c.user
            WHERE helpdesk_reference.status $archive  $filter
            ORDER BY helpdesk_acl_description.sort_priority DESC, description, status DESC, date, helpdesk_reference.user
    Ответить
    • Т.е. Вы ОП переписали вот в это?

      ЗЫЖ Адепты мускуля, плиз, объясните:
      AND  NOT `read`

      Как это?
      Ответить
      • false это по идее. В мускуле очень мягкие приведения типов.
        Ответить
        • Тогда я смысла этого:
          helpdesk_data.reference_id = helpdesk_reference.id AND
                                  helpdesk_data.user_id = helpdesk_reference.user AND
                                  NOT `read`

          НЕ понимаю.
          Одни AND и в конце hardcoded false => false.
          Ответить
          • Тьфу, что я написал то... Волосатый `read` спутал со строкой 'read', совсем голова не варит сегодня...

            В общем если в поле `read` лежит 0, false, или пустая строка, то он вернет 1 аля true, если там лежит null, то вернет null, если что-то другое - то 0 аля false. Вот.

            Под мягким приведением типа имелось в виду то, что он не гнушается складывать числа и строки и юзать в условиях строки и прочую гадость (включая подзапросы, возвращающие много строк), при этом делая неявные касты.
            Ответить
  • Зачем UNION ALL в скобках.
    Базы C и D это фильтры перед UNION ALL. Очевидно, что D убирает чуть больше чем C, тогда зачем же этот C нужен.
    Да и сам запрос не понятно для чего. Вывод какой-то статистики по пользователям и номерам?
    Ответить
      • Можете сказать, где здесь поддержка, где пользователь, и что возвращает. Опубликованный вами в первом посте код похоже или для другой или немного для другой цели.
        Ответить
  • Шикарные алиасы для таблиц, главное - всё сразу очевидно.
    Ответить

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

Помни, guest, за тобой могут следить!

    А не использовать ли нам bbcode?


    8