Вывести два связанных значения для двух полей идентификатора, указывающих одну и ту же таблицу - PullRequest
0 голосов
/ 14 февраля 2019

В моей базе данных PostgreSQL у меня есть такая таблица: поля

id|link1|link2|
---------------
1 | 34  | 66
2 | 23  | 8
3 | 11  | 99

link1 и link2 указывают на одну и ту же таблицу table2 с id и descr fields.

Я бы сделал SQL-запрос, который возвращает ту же строку, значение id и descr для двух полей, как это:

id|link1|link2|desc_l1|desc_l2|
-------------------------------
1 | 34  |66  | bla  | sisusj|
2 | 23  | 8  | ghhj | yui   |
3 | 11  | 99 | erd  |  bnbn |

Я пробовалразные запросы, но каждый возвращает две строки на id вместо одной.Как мне достичь этих результатов в моей базе данных PostgreSQL 9.04?

Ответы [ 2 ]

0 голосов
/ 14 февраля 2019

вы можете использовать случай здесь Как:

select link1,link2,
case
 when link1='34' and link2='66' then 'bla'
  when link1='23' and link2='8' then 'ghs'
   when link1='11' and link2='99' then 'erd'
end as desc_li,
case
 when link1='34' and link2='66' then 'sjm'
   when link1='23' and link2='8' then 'yur'
   when link1='11' and link2='99' then 'bnn'
end as desc_l2

from table1
0 голосов
/ 14 февраля 2019

Обычно этот запрос должен работать для вас.Предположим, что ваше первое имя таблицы table_name.

SELECT t.id, t.link1, t.link2, 
    l1.descr AS desc_l1,
    l2.descr AS desc_l2
FROM table_name t 
LEFT JOIN table2 l1
ON t.link1 = l1.id
LEFT JOIN table2 l2
ON t.link2 = l2.id;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...