Объединение результата запроса select с различными таблицами - PullRequest
0 голосов
/ 13 июня 2018

Я просто запрашиваю таблицу

select label,  proces,  product from Signalering sig

Что я хочу добавить к этому запросу, так это шанс присоединиться к результату выбора с 3 различными таблицами.Скажем, случай объединения только с 1 таблицей.Запрос будет выглядеть так:

select label,  proces,  product from Signalering sig
JOIN ScreeningLabelAuthorizationLock p
ON sig.label = p.Value

Теперь я хочу таким же образом, в то же время, объединить результат выбора еще с 2 таблицами.На мой взгляд, это выглядело бы так:

select label,  proces,  product from Signalering sig
JOIN ScreeningLabelAuthorizationLock p
ON sig.label = p.Value
JOIN ScreeningProcessAuthorizationLock q
ON sig.proces = q.Value
JOIN ScreeningProducthAuthorizationLock s
ON sig.proces = s.Value

Результат не является ожидаемым, потому что объединение работает с результатом предшествующего, а я хочу, чтобы оно работало из оператора Select.Заранее спасибо!

РЕДАКТИРОВАТЬ: правильный результат дает следующий запрос:

select [signaleringid], label,  proces,  product from Signalering sig
JOIN ScreeningLabelAuthorizationLock p
ON sig.label = p.Value
union
select [signaleringid], label,  proces,  product from Signalering sig
INNER JOIN ScreeningProcessAuthorizationLock q
ON sig.proces = q.Value
union
select [signaleringid], label,  proces,  product from Signalering sig
INNER JOIN ScreeningProductAuthorizationLock r
ON sig.product = r.Value

То, что я ищу, - это способ избежать 3 Выберите запросы и сделайте так, чтобы они были только 1.

Ответы [ 2 ]

0 голосов
/ 13 июня 2018

Учитывая ваши данные выборки и ожидаемые результаты, я полагаю, вы хотите использовать union all:

select s2.*
from Signalering s 
    join ScreeningLabelAuthorizationLock s2 on s.label = s2.value
union all
select s2.*
from Signalering s 
    join ScreeningProcessAuthorizationLock s2 on s.proces = s2.value
0 голосов
/ 13 июня 2018
select label,  proces,  product from Signalering sig
LEFT JOIN ScreeningLabelAuthorizationLock p
ON sig.label = p.Value
LEFT JOIN ScreeningProcessAuthorizationLock q
ON sig.proces = q.Value
LEFT JOIN ScreeningProducthAuthorizationLock s
ON sig.proces = s.Value
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...