Mysql
 sql >> Datenbank >  >> RDS >> Mysql

SQL Wählen Sie nur Zeilen aus, in denen mehrere Beziehungen vorhanden sind

Dies heißt Relational-Division

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

AKTUALISIERUNG 1

if eindeutige Einschränkung wurde für prop_id nicht erzwungen für jede parent_id , DISTINCT wird in diesem Fall benötigt.

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