2010-05-28 5 views
0

J'essaie de compter tous les ids de la table3 qui sont liés aux deux premières tables mais je pense que mon code SQL est faux quelqu'un peut-il m'aider à le réparer?Erreur d'agrégation MySQL

Voici le code:

$dbc = mysqli_query($mysqli,"SELECT table1.*, table2.*, COUNT(id) as num, table3.id 
          FROM table1 
          INNER JOIN table2 ON table1.id = table2.id 
          INNER JOIN table3 ON table2.id = table3.id 
          WHERE table2.id = '$id'"); 

Voici le message d'erreur.

1140: Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 4 
+0

Vous savez, vous pouvez poster n'importe quel message d'erreur que vous obtenez. Ou si vous n'obtenez pas d'erreur, vous pouvez publier la sortie que vous obtenez et la sortie attendue. –

Répondre

0

Peut-on essayer?

SELECT COUNT(table3.id) as num 
    FROM table3, table2, table1 
WHERE table1.id = table2.id 
    AND table2.id = table3.id 
    AND table2.id = $id 
0

Vous essayez d'utiliser une fonction d'agrégation, COUNT(), sans GROUP ing les premiers. En outre, vous devrez rendre la colonne "id" au sein de la COUNT() moins ambiguë similaire à la requête Adrian. S'il vous plaît essayez la requête suivante:

SELECT table1.*, table2.*, COUNT(table3.id) as num, table3.id 
    FROM table3, table2, table1  
WHERE table1.id = table2.id  
    AND table2.id = table3.id  
    AND table2.id = $id 
GROUP BY 
    table1.*, 
    table2.*, 
    table3.id 

Pour plus de détails sur les fonctions d'agrégation et les noms de colonnes ambiguës dans les requêtes, consultez le manuel de référence MySQL pour Group By Functions et Indentifier Qualifiers.