This is closely related to this question, but adds another requirement.
Given a parent table 'parent'
╔════════════╦════════╗
║ PARENT_ID ║ NAME ║
╠════════════╬════════╣
║ 1 ║ bob ║
║ 2 ║ carol ║
║ 3 ║ stew ║
╚════════════╩════════╝
and a many-many relationship table 'rel' between parent and a (here unspecified) property table
╔════════════╦══════════╗
║ PARENT_ID ║ PROP_ID ║
╠════════════╬══════════╣
║ 1 ║ 5 ║
║ 1 ║ 1 ║
║ 2 ║ 5 ║
║ 2 ║ 4 ║
║ 2 ║ 1 ║
║ 3 ║ 1 ║
║ 3 ║ 3 ║
╚════════════╩══════════╝
How can I select all parents that have all of and only a specified set of relationships? E.g. with the sample data, how can I find all parents that have relationships with exactly property 5 and 1?
SELECT PARENT_ID
FROM rel
GROUP BY PARENT_ID
HAVING SUM(PROP_ID NOT IN (5,1)) = 0
AND SUM(PROP_ID = 1) = 1
AND SUM(PROP_ID = 5) = 1
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With