Il y a une table hypothétique appelée Tableau 1, avec les colonnes:MySQL - comptent les différents champs de conditions différentes dans une table jointe
- id
- condition 1
- condition 2
- joinable_key
Il en existe un autre, Main_Table, dont l'ID correspond à la clé joinable dans le premier.
Je voudrais les joindre d'une telle manière que je puisse compter les rangées de Table1 en fonction de la condition 1 et de la condition 2 séparément - c'est-à-dire, je voudrais pouvoir "count (Table1.condition1) en tant que first_condition, comptez (Table1.condtion2) comme second_condition "sur la requête select.
La requête serait probablement ressembler à quelque chose comme ceci:
SELECT Main_Table.some_column, COUNT(Table1.condition1) AS first_condition, COUNT(Table1.condtion2) AS second_condition
FROM Main_Table
LEFT JOIN Table1 AS T1 on (T1.joinable_key = Main_Table.id AND T1.condition1 = 'something')
LEFT JOIN Table1 AS T2 on (T2.joinable_key = Main_Table.id AND T2.condition2 = 'something else')
GROUP BY (Main_Table.id)
Lorsque cela exécute, cependant, les deux résultats de comptage sont égaux, et se multiplient en fait les uns aux autres. Il est impératif que tous les résultats soient inclus dans la sortie finale - y compris ceux qui n'ont aucune entrée de Table1 - c'est-à-dire, s'il n'y a pas de ligne dans Table1 avec une clé joinable égale à Main_Table.id . Avant que quelqu'un ne suggère de faire deux requêtes distinctes et de le gérer via PHP - oui, je sais pourquoi et comment cela peut être fait, mais mon objectif est de savoir si ce multi-compte peut être fait tout en un question.
Merci
double possible de [comptage de plusieurs lignes dans MySQL dans une requête] (http://stackoverflow.com/questions/2957269/counting-multiple-rows-in-mysql-in-one-query) – Konerak