Kesalahan yang Anda dapatkan memberi tahu Anda bahwa kolom CategoryID
di WHERE
. Anda klausa ambigu, artinya sistem bermasalah untuk mengidentifikasi kolom yang sesuai karena ada beberapa CategoryID
kolom.
Untuk memperbaiki masalah ini, gunakan alias untuk menentukan kolom mana yang ingin Anda gunakan untuk WHERE
Anda klausa:
SELECT cat2.CategoryID AS CategoryID
,cat2.Name AS CategoryName
,COUNT(p.ProductID) AS CountProducts
FROM Category AS cat
INNER JOIN Category AS cat2 ON cat2.ParrentCategoryID = cat.CategoryID
INNER JOIN Products AS p ON p.CategoryID = cat2.CategoryID
WHERE cat.CategoryID = '876'
GROUP BY cat2.CategoryID, cat2.Name
ORDER BY cat2.Name
Saya juga mengubah sedikit kueri untuk mendapatkan hasil yang sama tetapi alih-alih menggunakan kombinasi LEFT JOIN
+ IN
klausa + sub kueri, saya menggunakan INNER JOIN
klausa. Dengan kueri ini Anda hanya perlu menentukan CategoryID
yang Anda inginkan sekali dan secara otomatis akan mendapatkan setiap kategori anak.
Saya tidak yakin kueri Anda berjalan dengan benar karena Anda menggunakan COUNT
berfungsi tanpa mengelompokkan hasil berdasarkan CategoryID
...
Semoga ini bisa membantu Anda.