Я не совсем уверен, что понял вопрос, но я думаю, что вы хотите:
select count(codes.lcfruh) as front_lcfruh,
dienstplan.kw,
dienstplan.datum
from dienstplan
left join codes on dienstplan.schicht = codes.lcfruh and codes.lcfruh <> ''
left join personal on personal.perso_id = dienstplan.perso_id
and personal.status = 'rezeption'
and dienstplan.kw = $kw
group by dienstplan.datum, dienstplan.kw
Если schicht
приходит от dienstplan
всегда будет строка для этого (так как это ведущий стол). Если я правильно вас понял, вы хотите получить 0
, если соответствующие строки не найдены. Для этого вам необходимо учитывать присоединился к table.
Редактировать:
условие where codes.lcfruh != ''
поворачивает внешнее соединение обратно в внутреннее соединение, так как любой «внешний» строка будет иметь lcfruh как NULL и ни в какое сравнение с NULL выходами «неизвестно», и для этого строки будут удалены из конечного результата , Если вы хотите исключить строки в таблице codes
, где lcfruh
имеет пустую строку, вам необходимо переместить это условие в предложение JOIN (см. Выше).
И еще две вещи: привыкнуть к префиксам столбцов в запросе с более чем одной таблицей. Это позволяет избежать двусмысленности и делает запрос более устойчивым к изменениям. Вы также должны понимать разницу между литералами чисел и строковыми литералами. 1
- это номер '1'
- это строка. Плохая привычка использовать строковые литералы, где ожидаются числа. MySQL довольно прощает, поскольку он всегда пытается «как-то» работать, но если вы когда-либо пользовались другими СУБД, вы могли бы получить ошибки, которые не понимаете.
Кроме того, неправильное использование вами group by
приведет к возврату случайных данных. Пожалуйста, смотрите эти сообщения в блоге, чтобы понять, почему:
Все остальные СУБД отклонит ваш запрос так, как это написано сейчас (и MySQL будет, а в случае, если вы включите более ANSI-совместимый режим)
Использование is_null или === оператора. 'is_null ($ result ['column'])' '$ result ['column'] === NULL' –
насколько я знаю (по крайней мере, в Oracle)' count' не может возврат null. – gdoron
schicht исходит из dienstplan, если результат NULL означает, что нет соответствующих строк – user2615859