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