저는 SQL에 익숙하지 않습니다. 조인에 관한 질문이 있습니다.SQL UNION을 JOIN으로 바꾸기
나는 세 번째 테이블 헤더 및 항목 수준에 대한 정보를 포함 할 수있는 다음과 같은 세 개의 테이블을 가지고
표 1 - HEADER
GUID
AAA
BBB
CCC
표 2 - ITEM
GUID ITEMNR -> Can be 01, 02, ... 99
BBB 01
BBB 02
CCC 01
표 3 - ADDINFO
GUID INFO ITEMNR -> If 00 info belongs to header, if > 00 info on item level
AAA xx 00
BBB yy 00
BBB xx 10
CCC zz 00
이제 info = xx 인 guids를 검색하고 싶습니다. 그러나 info = xx (헤더 레벨에서) 및 적어도 하나의 항목에 info = xx가있는 guid를 찾아야합니다.
So 결과는 일할 수있는 다음과 같은이
GUID ITEMNR
AAA 00
BBB 10
뭔가 같이해야하지만 UNION 사용
SELECT H.GUID, I.itemnr
from HEADER as H
inner join ADDINFO as A on H.guid = A.guid and A.itemnr = '00'
left outer join ITEM as I on I.guid = A.guid
where
A.info = 'xx' and
NOT EXIST (SELECT GUID FROM ADDINFO WHERE ADDINFO.guid = I.guid and
ADDINFO.itemnr = I.itemnr)
UNION
SELECT H2.GUID, I2.itemnr
from HEADER as H2
inner join ADDINFO as A2 on H2.guid = A2.guid and A2.itemnr > '00'
inner join ITEM as I2 on H2.guid = I2.guid
where A.info = 'xx'
은 SQL 전문가의 사람이 하나만 선택하여 위의 결과를 얻을 가능성을 알고 조인합니까 그러나 '노동 조합'이 아니라 '존재하지 않는다' s '- 내가 작업하고있는 응용 프로그램에서 UNION 또는'NOT EXISTS '를 사용할 수 없습니다.
'UNION'과'JOIN'은 매우 다른 것들을합니다. 단순히 대체 할 수는 없습니다. – Oded
설명 해주십시오. _why_ "현재 작업중인 응용 프로그램 UNION을 사용할 수 없거나 '존재하지 않음'을 사용할 수 없습니다." 이것은 매우 드문 사항이며 설명이 필요합니다. – Oded
일치 항목이 항목 수준에 있더라도 머리글의 GUID가 필요합니까? –