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)
.