Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Sélectionnez l'enregistrement parent avec tous les enfants dans SQL

En s'appuyant sur une astuce numérique (où le nombre de liens parent-enfant =le nombre d'enfants, ce parent est lié à tous les enfants) :

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>
)