Der Fehler, den Sie erhalten, sagt Ihnen, dass die Spalte CategoryID
in Ihrem WHERE
-Klausel nicht eindeutig ist, bedeutet dies, dass das System ein Problem hat, die entsprechende Spalte zu identifizieren, da es mehrere CategoryID
gibt Spalten.
Um dieses Problem zu beheben, verwenden Sie den Alias, um anzugeben, welche Spalte Sie für Ihr WHERE
verwenden möchten Klausel:
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
Ich habe auch die Abfrage ein wenig geändert, um das gleiche Ergebnis zu erhalten, aber anstatt eine Kombination aus LEFT JOIN
zu verwenden + IN
Klausel + Unterabfrage, ich habe INNER JOIN
verwendet Klauseln. Bei dieser Abfrage müssen Sie nur Ihre gewünschte CategoryID
definieren einmal und es werden automatisch alle untergeordneten Kategorien abgerufen.
Ich bin mir nicht sicher, ob Ihre Abfrage korrekt ausgeführt wird, da Sie COUNT
verwenden Funktion, ohne die Ergebnisse nach CategoryID
zu gruppieren ...
Ich hoffe, das wird Ihnen helfen.