SQL Join на нескольких столбцах строки - PullRequest
0 голосов
/ 19 сентября 2018

У меня есть следующая таблица IDDetails:

ID1 ID2 ID3
1   2   3
1   5   7 and so on

Я хочу связать каждый идентификатор строки с именем из таблицы имен:

ID Name
1  A
2  B
3  C
4  D
5  E
7  G

Вывод должен иметь 6столбцы типа:

ID1 Name1 ID2 Name2 ID3 Name3
1   A     2   B     3   C
1   A     5   E     7   G

Операция должна иметь минимальное количество соединений с ограниченными затратами.

1 Ответ

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

Этот запрос даст вам результаты, которые вы хотите.Обратите внимание, что вам нужно JOIN таблицу Names 3 раза, чтобы получить три разных имени для каждой строки.

SELECT i.ID1, n1.Name AS Name1,
       i.ID2, n2.Name AS Name2,
       i.ID3, n3.Name AS Name3
FROM IDDetails i
JOIN Names n1 on n1.ID = i.ID1
JOIN Names n2 on n2.ID = i.ID2
JOIN Names n3 on n3.ID = i.ID3

Вывод:

ID1     Name1   ID2     Name2   ID3     Name3
1       A       2       B       3       C
1       A       5       E       7       G

Обновить

Вот запрос без JOIN с, как было запрошено при редактировании после исходного сообщения:

SELECT i.ID1, (SELECT Name FROM Names n WHERE n.ID = i.ID1) AS Name1,
       i.ID2, (SELECT Name FROM Names n WHERE n.ID = i.ID2) AS Name2,
       i.ID3, (SELECT Name FROM Names n WHERE n.ID = i.ID3) AS Name3
FROM IDDetails i

Вывод:

ID1     Name1   ID2     Name2   ID3     Name3
1       A       2       B       3       C
1       A       5       E       7       G

SQLFiddle Демо обоих запросов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...