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