sql >> Base de Datos >  >> RDS >> Sqlserver

Seleccionar registro principal con todos los hijos en SQL

Confiando en un truco numérico (donde el número de enlaces padre-hijo =el número de hijos, ese padre está vinculado a todos los hijos):

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