Mysql
 sql >> Datenbank >  >> RDS >> Mysql

mysql ...in where-Klausel ist mehrdeutig

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.