Мне нужно выполнить запрос, подобный этому:
Предположим, столбцы таблицы похожи на - <key>,<name>,<value>
, и мне нужно найти значение для имени = 'NAME' при следующих условиях.
- Ключ должен находиться в keys_i, где name_i = 'NAME_i' и значение = 'VALUE_i'.
- Ключ должен находиться в keys_j, где name_j = 'NAME_j' и значение = 'VALUE_j'.
- Ключ должен находиться в keys_k, где name_k = 'NAME_k' и value = 'VALUE_k'.
В настоящее время я использую вложенный запрос в форме:
Select a.value from <table_name> a
where a.name='NAME'
and a.key IN(
Select b.key
from <table_name> b
where (b.name = 'NAME_i' and b.value = 'VALUE_i')
and b.key IN(
Select c.key
from <table_name> c
where (c.name = 'NAME_j'
and c.value = 'VALUE_j')
and c.key IN(
Select d.key
from <table_name> d
where (d.name = 'NAME_k' and d.value = 'VALUE_k'))));
Есть ли более обобщенная форма, использующая Self Join или любую другую технику?Моя таблица небольшая, и оптимизация на самом деле не требуется, но что было бы идеальным решением для больших наборов данных?