Dies ist Ihre Anfrage:
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;
---------^
Die angegebenen Orte haben Probleme. Beachten Sie, dass die SELECT und GROUP BY beziehen sich auf eine andere Spalte. In einem LEFT JOIN , möchten Sie (so ziemlich) immer zuerst nach etwas aggregieren Tabelle, nicht die zweite.
Der ORDER BY ist ein weiteres Problem. Sie aggregieren nicht nach dieser Spalte, daher müssen Sie entscheiden, welchen Wert Sie möchten. Ich vermute MIN() oder 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;
Ich werde auch diesen COUNT(t.qty) hinzufügen ist verdächtig. Normalerweise qty bezieht sich auf "Menge" und Sie wollen die Summe:SUM(t.qty) .