Toto je váš dotaz:
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;
---------^
Místa, na která ukazují, mají problémy. Všimněte si, že SELECT
a GROUP BY
odkazují na jiný sloupec. V LEFT JOIN
, vy (v podstatě) vždy chcete agregovat podle něčeho prvního stůl, ne druhý.
ORDER BY
je další problém. Podle tohoto sloupce neagregujete, takže se musíte rozhodnout, jakou hodnotu chcete. Hádám MIN()
nebo 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;
Přidám také, že COUNT(t.qty)
je podezřelý. Obvykle qty
odkazuje na "množství" a co chcete, je součet:SUM(t.qty)
.