2015-06-27 8 views
0

Я пытаюсь получить данные из двух идентичных текущих и архивных таблиц с помощью запроса JOIN ниже. Однако это возвращает 2 набора результатов, а также не возвращает данные в таблицах архива (я уверен, что это связано с тем, что я ссылаюсь на таблицу CURRENT «nTrans» в команде JOIN, но я не знаю, как ссылаться на обе таблицы).Использование 2 команд UNION в запросе JOIN

Я пробовал каждую комбинацию запроса без успеха. Что я делаю не так?

SELECT N.TranType,N.UserNo,N.TranCode 
FROM (SELECT TranType,UserNo,TranCode FROM nTrans 
UNION ALL SELECT TranType,UserNo,TranCode FROM nTransArc) 
AS N 
SELECT H.HeaderKey 
FROM (SELECT HeaderKey FROM MoveHdr 
UNION ALL SELECT HeaderKey FROM MoveHdrArc) 
AS H 
JOIN nTrans N ON H.HeaderKey = N.TranType + N.UserNo + N.TranCode 

ответ

2

Я думаю, что вы хотите:

SELECT N.TranType, N.UserNo, N.TranCode 
FROM (SELECT TranType, UserNo, TranCode FROM nTrans 
     UNION ALL 
     SELECT TranType, UserNo, TranCode FROM nTransArc) AS N 
JOIN (SELECT HeaderKey FROM MoveHdr 
     UNION ALL 
     SELECT HeaderKey FROM MoveHdrArc) AS H 
ON H.HeaderKey = N.TranType + N.UserNo + N.TranCode