Ini pertanyaan Anda:
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;
---------^
Tempat-tempat yang ditunjuk memiliki masalah. Perhatikan bahwa SELECT
dan GROUP BY
mengacu pada kolom yang berbeda. Dalam LEFT JOIN
, Anda (hampir) selalu ingin menggabungkan dengan sesuatu di pertama tabel, bukan yang kedua.
ORDER BY
adalah masalah lain. Anda tidak menggabungkan berdasarkan kolom ini, jadi Anda perlu memutuskan nilai mana yang Anda inginkan. Saya menebak MIN()
atau 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;
Saya juga akan menambahkan COUNT(t.qty)
dicurigai. Biasanya qty
mengacu pada "kuantitas" dan yang Anda inginkan adalah jumlah:SUM(t.qty)
.