Итак, у меня есть промежуточная таблица в MySQL, называемая «Inventory», с двумя PK: idMovie и idSubsidiary.Эта таблица выглядит следующим образом:
----------------------------------
idMovie (int) | idSubsidiary (int)
----------------------------------
0 | 0
2 | 0
1 | 1
3 | 2
----------------------------------
Я хочу выбрать идентификаторы пары дочерних компаний, которые имеют точно такие же фильмы.
Для этого я былдумать о чем-то вроде этого:
select distinct inv1.idSubsidiary, inv2.idSubsidiary
from inventory inv1
join inventory inv2
on inv1.idSubsidiary <> inv2.idSubsidiary
where not exists (
SELECT i1.idSubsidiary, i1.idMovie , i2.idSubsidiary, i2.idMovie
FROM inventory i1
INNER JOIN inventory i2 ON i1.idMovie = i2.idMovie
WHERE (i1.idSubsidiary= inv1.idSubsidiary and i2.idSubsidiary= inv2.idSubsidiary
AND i2.idSubsidiary IS NULL
)
Результат, который я ищу, будет примерно таким:
idSubsidiary | idSubsidiary
---------------------------
0 | 1
3 | 4
Итак, дочерние 0 и 1 имеют одинаковые одинаковые фильмы наинвентаризация, то же самое с 3 и 4.
Однако ранее показанный запрос не работает.По сути, запрос ищет пары идентификаторов SubsidiaryID в Inventory, а затем выполняет вложенный запрос, чтобы определить, есть ли у первой дочерней компании какой-либо фильм, которого нет у второй дочерней компании.Если они этого не делают, он выбирает оба.
Однако вложенный запрос не работает.Как я уже сказал, я хочу сделать левое соединение той же таблицы без внутренней части.
Любая помощь очень ценится:)