Это довольно сложная проблема для описания, но я попытаюсь объяснить это на примере. Я думал, что смог бы использовать функцию Oracle Instr для этого, но он не принимает запросы в качестве параметров.
Вот упрощение моих данных:
Table1
Person Qualities
Joe 5,6,7,8,9
Mary 7,8,10,15,20
Bob 7,8,9,10,11,12
Table2
Id Desc
5 Nice
6 Tall
7 Short
Table3
Id Desc
8 Angry
9 Sad
10 Fun
Table4
Id Desc
11 Boring
12 Happy
15 Cool
20 Mad
ЗдесьЭто своего рода запрос, чтобы дать представление о том, чего я пытаюсь достичь:
select * from table1
where instr (Qualities, select Id from table2, 1,1) <> 0
and instr (Qualities, select Id from table3, 1,1) <> 0
and instr (Qualities, select Id from table3, 1,1) <> 0
Я пытаюсь выяснить, у каких людей есть хотя бы 1 качество из каждой из 3 групп качеств (таблицы 2,3 и 4)
Таким образом, Джо не будет возвращен в результатах, потому что у него нет качества от каждой из 3 групп, но у Мэри и Джо будет, поскольку у них есть по крайней мере 1 качество откаждая группа.
Мы используем Oracle 12, спасибо!