Oto Twoje zapytanie:
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;
---------^
Wskazane miejsca mają problemy. Zauważ, że SELECT i GROUP BY odnoszą się do innej kolumny. W LEFT JOIN , (prawie) zawsze chcesz agregować według czegoś w pierwszym stół, a nie drugi.
ORDER BY to kolejny problem. Nie agregujesz według tej kolumny, więc musisz zdecydować, którą wartość chcesz. Zgaduję, że MIN() lub 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;
Dodam też, że COUNT(t.qty) jest podejrzany. Normalnie qty odnosi się do „ilości”, a to, czego chcesz, to suma:SUM(t.qty) .