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