Учитывая родительскую таблицу 'parent'
╔═══════════╦══════════╗
║ PARENT_ID ║ NAME ║
╠═══════════╬══════════╣
║ 1 ║ bob ║
║ 2 ║ carol ║
║ 3 ║ stew ║
╚═══════════╩══════════╝
и таблица отношений "многие-многие" между родительским элементом и (здесь не указана) таблица свойств
╔═══════════╦═══════════╗
║ PARENT_ID ║ PROP_ID ║
╠═══════════╬═══════════╣
║ 1 ║ 5 ║
║ 1 ║ 1 ║
║ 2 ║ 5 ║
║ 2 ║ 4 ║
║ 2 ║ 1 ║
║ 3 ║ 1 ║
║ 3 ║ 3 ║
╚═══════════╩═══════════╝
Как я могу выбрать всех родителей, у которых есть все из указанного набора родственных связей? Например. с образцами данных, как мне найти всех родителей, у которых есть свойство 5 и 1?
изменить: тот же вопрос, но с требованием для точного совпадения: SQL Выбирать только строки, в которых существует несколько точных взаимосвязей
HAVING
, чтобы возвращать более точно:HAVING COUNT(DISTINCT b.prop_id) = 2
31.12.2012DISTINCT
. 31.12.2012SELECT a.name FROM parent a INNER JOIN rel b ON a.parent_ID = b.parent_ID WHERE b.prop_id IN (1,5)
, и увидите разницу. 31.12.2012