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