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