Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySql 5.7 La clause ORDER BY n'est pas dans la clause GROUP BY et contient une colonne non agrégée

Voici votre requête :

SELECT p.title, COUNT(t.qty) AS total 
-------^
FROM payments t LEFT JOIN
     products AS p 
     ON p.id = t.item 
WHERE t.user = 1 
GROUP BY t.item
---------^
ORDER BY t.created DESC;
---------^

Les endroits pointés ont des problèmes. Notez que le SELECT et GROUP BY font référence à une colonne différente. Dans un LEFT JOIN , vous voulez (à peu près) toujours agréger par quelque chose dans le premier table, pas la seconde.

Le ORDER BY est un autre problème. Vous n'agrégez pas par cette colonne, vous devez donc décider quelle valeur vous voulez. Je devine MIN() ou MAX() :

SELECT p.title, COUNT(t.qty) AS total 
FROM payments t LEFT JOIN
     products AS p 
     ON p.id = t.item 
WHERE t.user = 1 
GROUP BY p.title
ORDER BY MAX(t.created) DESC;

J'ajouterai également que COUNT(t.qty) est suspect. Normalement qty fait référence à "quantité" et ce que vous voulez est la somme :SUM(t.qty) .