Cela peut être un peu difficile à expliquer, mais je vais essayer.Comment est-ce que j'écrirais cette requête mysql profonde à 3 niveaux?
Je souhaite afficher une liste de catégories (stockées dans 1 table) et le nombre de domaines associés à chaque catégorie (stockés dans une autre table).
La clé singe dans ce cas est que chaque domaine a un ensemble d'enregistrements qui lui sont associés (qui sont stockés dans une 3ème table). Je veux seulement montrer les catégories qui ont des domaines qui leur sont associés, et le nombre de domaines ne devrait refléter que les domaines qui ont des enregistrements qui leur sont associés (à partir de la 3ème table).
Ma requête en cours
SELECT r.rev_id, c.cat_id, c.cat_name, count(d.dom_id) As rev_id_count FROM reviews r
INNER JOIN domains d ON r.rev_domain_from=d.dom_id
INNER JOIN categories c ON d.dom_catid=c.cat_id
WHERE rev_status = 1
GROUP BY cat_name
ORDER BY cat_name
Ceci permet de sélectionner les noms des catégories correctes, mais montre un nombre de faux (de rev_id_count). Si la catégorie a 2 domaines, et que chaque domaine a 2 enregistrements, il affichera le nombre de 4, alors qu'il devrait être 2.
Le 'distinct' est la clé. –