У меня есть две таблицы Document и Label (не в моем случае, я использую аналогию). Один документ может иметь N меток. Когда мне нужно выбрать Документы, на которых есть метки, я легко могу это сделать
select D.id from document D
join label L on D.id = L.document_id
where L.value in('label1','label2',...)
Как написать запрос, где мне нужны Документы, на которых нет меток? Когда я делаю это
select D.id from document D
join label L on D.id = L.document_id
where L.value not in('label1','label2',...)
, тогда это не работает. Все документы, имеющие более одной метки, где одна из этих меток находится в списке, будут возвращены в любом случае. Потому что r aws с комбинацией Document и тех оставшихся меток (не перечисленных меток) будет просто соответствовать условию where, поэтому запрос вернет документы, которые я не хочу возвращать.
Я фактически работаю над запрос подобный этому в Java Spring JPA типизированных запросах. Мне нужно решить этот случай для моей системы фильтрации. Но я думаю, что лучше сначала решить эту проблему на уровне SQL.
Кстати, для простоты мы можем заменить "не в" на "! =". Проблема все та же.
Есть идеи для простого решения? Заранее спасибо