Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Seleziona Record padre con tutti i figli in SQL

Basandosi su un trucco numerico (dove il numero di collegamenti genitore-figlio =il numero di figli, quel genitore è collegato a tutti i figli):

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