sql >> Base de Datos >  >> RDS >> Mysql

SQL Seleccionar solo filas donde existen múltiples relaciones

Esto se llama División relacional

SELECT  a.name
FROM    parent a
        INNER JOIN rel b
            ON a.parent_ID = b.parent_ID
WHERE   b.prop_id IN (1,5)
GROUP BY a.name
HAVING COUNT(*) = 2

ACTUALIZACIÓN 1

si restricción única no se aplicó en prop_id para cada parent_id , DISTINCT es necesario en este caso.

SELECT  a.name
FROM    parent a
        INNER JOIN rel b
            ON a.parent_ID = b.parent_ID
WHERE   b.prop_id IN (1,5)
GROUP BY a.name
HAVING COUNT(DISTINCT b.prop_id) = 2