[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Самый большой запрос/сложный
Страницы: 1, 2, 3, 4, 5, 6
Эли4ка
Oyeme
понятно..спасибо..
Renden
Запрос не сложный, но в нем я решил переложить с php empty на sql, вроде красиво :)

SELECT u.id,u.firstname,u.lastname,d.dep_name,
u.email,u.interphone,un.unit_name,
IFNULL (u.middlename,' - ') AS middlename,
IFNULL (us.status_name,'работает') AS status_name,
IFNULL (u.facephoto,IF(u.sex=1,'no_photo_male.gif','no_photo_female.gif')) AS facephoto,
IFNULL (us.status_fullname,'сотрудник находится на своем рабочем месте') AS status_fullname,
IFNULL (us.collor,'#bee88b') AS collor
FROM users u
LEFT JOIN holiday h ON u.id = h.user_id AND h.date_begin <= CURDATE() and h.date_end >= CURDATE()
LEFT JOIN users_status us ON us.status_id = h.hol_status
LEFT JOIN departments d ON d.dep_id = u.ugroup
LEFT JOIN units un ON un.unit_id = d.dep_unit
WHERE u.state = '1'
$add_query
ORDER BY un.unit_sort, d.dep_sort

Вчера сделал, оптимизировал старый запрос, скорость стала в 2-3 раза выше :)
SELECT IFNULL(IFNULL (CONCAT(lastname,' ',firstname,' ',middlename) ,tu.host), t.trafd_to) AS host,
u.ip,u.id,t.sum_traf,tu.stat_ip
FROM (
SELECT SUM(trafd_all/1024) AS sum_traf, trafd_to
FROM traffic
LEFT JOIN traffic_exception ON trafd_to = exc_ip
WHERE exc_ip IS NULL
AND
MONTH(trafd_date) ='$month'
AND YEAR(trafd_date)='$year'
GROUP BY trafd_to
) t
LEFT JOIN users u ON INET_ATON(u.ip)=t.trafd_to
LEFT JOIN traffic_users tu ON INET_ATON(tu.stat_ip)=t.trafd_to
ORDER BY t.sum_traf DESC


Был еще когда-то запрос с 8 JOIN-нами, но лагал он жестко, пришлось разбить, по кускам он здесь не интересен :)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.