У меня есть запрос, как это:Как сделать LEFT JOIN работать с группировкой/подсчетом в MySQL?
SELECT type.id, type.name, COUNT(*) AS tot
FROM page
LEFT JOIN type ON page.type=type.id
GROUP BY type.id
Однако это не выбрать все типы: он пропускает любые типы, которые не в таблице страниц еще. Я просто хочу, чтобы он перечислял каждый тип с числом, представляющим, сколько страниц имеет этот тип, включая 0, где тип не встречается. Нужно ли мне другое соединение?
Я пробовал это с помощью count (*), прежде чем правильно читать ваш ответ, а отсутствующий тип возвратил 2 в качестве счетчика. Использование count (page.type), как вы сказали, дает 0. Почему это происходит? – DisgruntledGoat
Кажется, что использование count (type.id) возвращает 2. – DisgruntledGoat
'COUNT (*)' подсчитывает все строки. 'COUNT (page.type)' только считает строки, где page.type не NULL. Когда вы выполняете JOIN, как в моем ответе, строки для 'types', у которых нет' '' '' '' '' '' '' 'столбцов' 'столбцов, равных NULL. Когда мы выполняем 'COUNT (page.type)', мы только подсчитываем строки 'types', у которых есть' pages' (столбцы страницы не равны нулю). – hrnt