SELECT w.name_worker, w.surname_worker, w.midname_worker, w.id_worker, SUM(number) numb
FROM workers w
LEFT JOIN exhours e ON (w.id_worker = e.id_worker)
LEFT JOIN orders o ON (e.id_order = o.id_order)
WHERE o.datetime_order >= '$date_start' AND o.datetime_order <= '$date_end'
GROUP BY w.id_worker
Использую такой запрос, чтобы посчитать количество отработанных часов сотрудником за период времени.
Как можно добавить в выдачу всех сотрудников из таблицы workers, чтобы были и те, кто ничего не отработал за этот период?
Посоветовали использовать left join, но у меня ничего не поменялось
Если есть WHERE, то его условие в запросе является обязательным, следовательно у пользователей которые ничего не отработали, вероятно записей в таблице orders нет, поэтому ваше условие отсекает таких.
Вам нужно вынести это условие в JOIN и тогда появятся сотрудники которые ничего не отработали в этом периоде.
SELECT w.name_worker,
w.surname_worker,
w.midname_worker,
w.id_worker,
SUM(number) numb
FROM workers w
LEFT JOIN exhours e ON (w.id_worker = e.id_worker)
LEFT JOIN orders o ON (e.id_order = o.id_order
AND o.datetime_order >= $date_start
AND o.datetime_order <= $date_end)
GROUP BY w.id_worker
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники