Запрос столбцов в SQL, где нужные столбцы хранятся в другой таблице - PullRequest
0 голосов
/ 17 сентября 2018

Я пытаюсь создать запрос, в котором выбранные строки выбираются на основе данных, расположенных в другой таблице.По сути, в одной таблице есть имя столбца, которому мы пытаемся соответствовать, и значение, которое мы пытаемся получить.

Например, скажем, это мои таблицы:

TABLE_1

TABLE_2_COL | VALUE
--------------------
COL_1       | dog
COL_2       | cat
COL_3       | fish

TABLE_2

id |  COL_1 | COL_2 | COL_3
------------------------
1  |  cow   | seal  | snake
2  |  cow   | cat   | snake
3  |  cow   | seal  | dog  
4  |  fish  | seal  | snake

Я хочусделать что-то вроде

select t2.* 
from TABLE_1 t1 
left join TABLE_2 t2
on t2[t1.TABLE_2_COL] = t1.VALUE   <- this line obviously not correct, but it's the line that respresents what I'm trying to do

, которое вернет

id |  COL_1 | COL_2 | COL_3
----------------------------
2  |  cow   | cat   | snake

Столбец 'TABLE_2_COL' в таблице один всегда будет содержать имя одного из столбцов TABLE_2.Поскольку единственная строка в TABLE_2, которая удовлетворяет запросу, который я хочу сделать, - это 2 (где COL_2 - «cat»), это строка, которая возвращает.

1 Ответ

0 голосов
/ 17 сентября 2018

Это не отличный формат данных, но вы можете сделать:

select t2.*
from table_2 t2 join
     table_1 t1
     on (t1.TABLE_2_COL = 'col1' and t1.value = t2.col1) or
        (t1.TABLE_2_COL = 'col2' and t1.value = t2.col2) or
        (t1.TABLE_2_COL = 'col3' and t1.value = t2.col3);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...