Questa è la tua domanda:
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;
---------^
I luoghi indicati hanno problemi. Si noti che il SELECT e GROUP BY si riferiscono a colonne diverse. In un LEFT JOIN , tu (praticamente) vuoi sempre aggregare per qualcosa nel primo tabella, non la seconda.
Il ORDER BY è un altro problema. Non stai aggregando per questa colonna, quindi devi decidere quale valore desideri. Sto indovinando MIN() o 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;
Aggiungerò anche quel COUNT(t.qty) è sospetto. Normalmente qty si riferisce a "quantità" e quello che vuoi è la somma:SUM(t.qty) .