Đây là truy vấn của bạn:
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;
---------^
Các địa điểm được chỉ ra có vấn đề. Lưu ý rằng SELECT
và GROUP BY
đang đề cập đến cột khác nhau. Trong LEFT JOIN
, bạn (khá nhiều) luôn muốn tổng hợp theo thứ gì đó trong đầu tiên bảng, không phải bảng thứ hai.
ORDER BY
là một vấn đề khác. Bạn không tổng hợp theo cột này, vì vậy bạn cần quyết định giá trị nào bạn muốn. Tôi đoán MIN()
hoặc 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;
Tôi cũng sẽ thêm COUNT(t.qty)
đó là nghi ngờ. Thông thường qty
đề cập đến "số lượng" và những gì bạn muốn là tổng:SUM(t.qty)
.