Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Wählen Sie übergeordneten Datensatz mit allen untergeordneten Elementen in SQL aus

Unter Berufung auf einen numerischen Trick (wobei die Anzahl der Eltern-Kind-Verknüpfungen =die Anzahl der Kinder ist, ist dieser Elternteil mit allen Kindern verknüpft):

SELECT Parent.ParentID, COUNT(*)
FROM Parent
INNER JOIN ChildParent
    ON ChildParent.ParentID = Parent.ParentID
INNER JOIN Child
    ON ChildParent.ChildID = Child.ChildID
WHERE <ChildFilterCriteria>
GROUP BY Parent.ParentID
HAVING COUNT(*) = (
    SELECT COUNT(Child.ChildID)
    FROM Child WHERE <ChildFilterCriteria>
)