Това е вашето запитване:
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;
---------^
Посочените места имат проблеми. Забележете, че SELECT
и GROUP BY
се отнасят до различна колона. В LEFT JOIN
, вие (до голяма степен) винаги искате да обобщавате по нещо в първия таблица, а не втората.
ORDER BY
е друг проблем. Вие не обобщавате по тази колона, така че трябва да решите коя стойност искате. Предполагам MIN()
или 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;
Също така ще добавя, че COUNT(t.qty)
е заподозрян. Обикновено qty
се отнася за "количество" и това, което искате, е сумата:SUM(t.qty)
.