Mysql
 sql >> Database >  >> RDS >> Mysql

SQL Selezionare solo le righe in cui esistono più relazioni

Questo si chiama Divisione relazionale

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

AGGIORNAMENTO 1

se vincolo univoco non è stato applicato su prop_id per ogni parent_id , DISTINCT è necessario in questo 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