Dit is uw vraag:
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;
---------^
De aangewezen plaatsen hebben problemen. Merk op dat de SELECT
en GROUP BY
verwijzen naar een andere kolom. In een LEFT JOIN
, u (vrijwel) altijd wilt aggregeren door iets in de eerste tafel, niet de tweede.
De ORDER BY
is een ander probleem. U aggregeert niet op basis van deze kolom, dus u moet beslissen welke waarde u wilt. Ik gok MIN()
of 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;
Ik zal ook toevoegen dat COUNT(t.qty)
is verdacht. Normaal qty
verwijst naar "hoeveelheid" en wat je wilt is de som:SUM(t.qty)
.