Объединение объединений - PullRequest
4 голосов
/ 10 января 2011

В моей таблице X есть имя объекта и имя производителя, но мне нужно отобразить их в качестве ID объекта и производителя.

Я написал два объединения, чтобы отобразить их:

Первый отображает идентификатор объекта:

select T1.facilityID, t2.*
from lkuFacility t1 right join X t2 on t1.facilityName = t2.facility
and t1.siteCode = t2.siteID
order by siteid

Второй отображает идентификатор производителя:

select T1.manufacturerID, t2.*
from lkuManufacturer t1 right join X t2 on t1.manufacturerName = t2.manufacturer
order by manufacturerid

Как я могу поместить их в один запрос, чтобы на одном экране результатов отображались как идентификатор объекта, так и идентификатор производителя?

Ответы [ 3 ]

6 голосов
/ 10 января 2011

Если вы хотите, чтобы они были связаны на основе таблицы X, попробуйте это:

SELECT f.facilityID, m.manufacturerID, X.*
FROM X
LEFT JOIN lkuFacility AS f
ON f.facilityname = X.facility AND f.siteCode = X.siteID
LEFT JOIN lkiManufacturer AS m
ON m.manufacturerName = X.manufacturer

Редактировать:
Если вы хотите объединить их в тот же набор результатов, ноне бок о бок (как указано выше), вы должны иметь возможность использовать оператор UNION следующим образом:

select T1.facilityID, t2.*
from lkuFacility t1 right join X t2 on t1.facilityName = t2.facility
and t1.siteCode = t2.siteID
UNION ALL
select T1.manufacturerID, t2.*
from lkuManufacturer t1 right join X t2 on t1.manufacturerName = t2.manufacturer
order by manufacturerid
0 голосов
/ 10 января 2011

Если вы не возражаете против них в отдельных строках, сделайте оператор UNION ALL.Если вы хотите, чтобы оба были в одной строке, вам может потребоваться выполнить два соединения с таблицей X.

0 голосов
/ 10 января 2011

Вы можете использовать оператор UNION ALL для объединения двух запросов.

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