J'ai une requête comme ceci:Comment faire fonctionner LEFT JOIN avec grouping/count dans MySQL?
SELECT type.id, type.name, COUNT(*) AS tot
FROM page
LEFT JOIN type ON page.type=type.id
GROUP BY type.id
Toutefois, cela ne sélectionne pas tous les types: il manque à tous les types qui ne sont pas dans le Tableau de la page. Je veux juste qu'il liste chaque type avec un nombre représentant combien de pages ont ce type, y compris 0 où le type ne se produit pas. Ai-je besoin d'une jointure différente?
J'ai essayé ceci en utilisant count (*) avant de lire correctement votre réponse, et le type manquant a renvoyé 2 comme nombre. Utiliser count (page.type) comme vous l'avez dit donne 0. Pourquoi cela arrive-t-il? – DisgruntledGoat
Il semble que l'utilisation de count (type.id) renvoie 2 également. – DisgruntledGoat
'COUNT (*)' compte toutes les lignes. 'COUNT (page.type)' ne compte que les lignes où page.type n'est pas NULL. Lorsque vous faites un JOIN comme dans ma réponse, les lignes pour 'types' qui n'ont pas de' pages' ont toutes les colonnes 'page' définies à NULL. Quand nous faisons 'COUNT (page.type)', nous ne comptons que les lignes de 'types' qui ont' pages' (les colonnes de la page ne sont pas nulles). – hrnt