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

SQL Sélectionnez uniquement les lignes où plusieurs relations existent

Cela s'appelle Division relationnelle

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

MISE À JOUR 1

si contrainte unique n'était pas appliqué sur prop_id pour chaque parent_id , DISTINCT est nécessaire dans ce cas.

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