Мне нужно перечислить все названия, которые имеют элементы в библиотеках A, B и D. В библиотеке также могут быть элементы C, но мне не нужно об этом беспокоиться
У меня есть это SQL -query - есть ли более разумный способ сделать это? Я полагаю, что проблему можно сформулировать примерно так: есть ли в этих трех перечисленных семьях родственники?
(В реальной жизни мне приходится находить предметы в 42 библиотеках, и реальный вопрос также связан с резервами - так что-нибудь, что делает код короче приветствуется)
SELECT DISTINCT b.biblionumber
FROM items i
LEFT JOIN biblio b ON (b.biblionumber=i.biblionumber)
WHERE i.homebranch = 'A'
AND EXISTS
(
select *
FROM items i2
WHERE i2.biblionumber = b.biblionumber
AND i2.homebranch = 'B'
)
AND EXISTS
(
select *
FROM items i3
WHERE i3.biblionumber = b.biblionumber
AND i3.homebranch = 'D'
)