Esta es su 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;
---------^
Los lugares señalados tienen problemas. Note que el SELECT
y GROUP BY
se refieren a una columna diferente. En un LEFT JOIN
, usted (prácticamente) siempre quiere agregar por algo en el primero mesa, no la segunda.
El ORDER BY
es otro problema No está agregando por esta columna, por lo que debe decidir qué valor desea. Supongo que MIN()
o 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;
También agregaré que COUNT(t.qty)
es sospechoso Normalmente qty
se refiere a "cantidad" y lo que quieres es la suma:SUM(t.qty)
.