Lỗi bạn gặp phải cho bạn biết rằng cột CategoryID
trong WHERE
của bạn mệnh đề không rõ ràng, điều đó có nghĩa là hệ thống gặp sự cố khi xác định cột thích hợp vì có nhiều CategoryID
cột.
Để khắc phục sự cố này, hãy sử dụng bí danh để chỉ định cột nào bạn muốn sử dụng cho WHERE
của mình mệnh đề:
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
Tôi cũng đã thay đổi một chút truy vấn để nhận được kết quả tương tự nhưng thay vì sử dụng kết hợp LEFT JOIN
+ IN
mệnh đề + truy vấn phụ, tôi đã sử dụng INNER JOIN
Với truy vấn này, bạn chỉ cần xác định CategoryID
mong muốn của mình một lần và nó sẽ tự động nhận mọi danh mục con.
Tôi không chắc rằng truy vấn của bạn chạy chính xác vì bạn đang sử dụng COUNT
chức năng mà không cần nhóm kết quả theo CategoryID
...
Hy vọng điều này sẽ giúp bạn.