Допустим, у меня есть мастер-таблица (таблица1) с подробным описанием (таблица2). Для каждой основной записи может быть несколько подробных записей. Теперь я хочу запрос, который подсчитывает все подробные записи для каждой основной записи:
SELECT t1.id, count(t2.*)
FROM table1 as t1
LEFT JOIN table2 AS t2 ON t2.id=t1.id
GROUP BY t1.id
Это дает мне ровно столько же записей, сколько в таблице 1.
Но когда я добавляю оператор WHERE для подсчета только тех записей, у которых контрольное поле больше 0, я больше не получаю все записи в таблице1! Те, у которых нет соответствующих подробных записей, теперь полностью исключены. Почему это происходит?
SELECT t1.id, count(t2.*)
FROM table1 as t1
LEFT JOIN table2 AS t2 ON t2.id=t1.id
WHERE t2.checkfield != 0
GROUP BY t1.id
(Возможно, что-то еще не так в моем реальном запросе, поскольку я попытался упростить это для этого примера, но я думаю, что понял правильно)