Det här är din fråga:
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 påpekade platserna har problem. Lägg märke till att SELECT
och GROUP BY
hänvisar till annan kolumn. I en LEFT JOIN
, vill du (i stort sett) alltid aggregera med något i första tabellen, inte den andra.
ORDER BY
är ett annat problem. Du aggregerar inte efter den här kolumnen, så du måste bestämma vilket värde du vill ha. Jag gissar på MIN()
eller 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;
Jag lägger också till att COUNT(t.qty)
är misstänkt. Normalt qty
hänvisar till "kvantitet" och det du vill ha är summan:SUM(t.qty)
.