Esta é a sua consulta:
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;
---------^
Os lugares apontados têm problemas. Observe que o
SELECT
e GROUP BY
estão se referindo a coluna diferente. Em um LEFT JOIN
, você (praticamente) sempre deseja agregar por algo no primeiro mesa, não a segunda. O
ORDER BY
é outro problema. Você não está agregando por esta coluna, portanto, você precisa decidir qual valor deseja. Estou supondo MIN()
ou 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;
Também adicionarei que
COUNT(t.qty)
é suspeito. Normalmente qty
refere-se a "quantidade" e o que você quer é a soma:SUM(t.qty)
.