다음은 내가 가지고있는 것입니다.계층 적 규칙 집합을 기반으로 복잡한 SQL 선택을 수행하는 방법은 무엇입니까?
T1은 복잡한 SQL의 ID와 합계를 많이 선택합니다. TA, PF 및 BL은 서로 다른 주소 정보를 보유하는 3 가지 테이블입니다.
TA는 T1.ID.있는 행의 존재를 확인하기 위해 1 차 주소 테이블 : T1의 각 ID에 대한 올바른 주소를 얻기 위하여
는 3 개 계층 일련의 규칙을 따라가 TA에 행이 있으면 주소를 가져 와서 점검 테이블 PF 및 BL을 무시하십시오.
PF는 T1.ID가있는 TA로부터 아무것도 반환하지 않았는지 확인하는 두 번째 주소 테이블입니다. PF에 행이 있으면 주소를 가져 와서 확인 테이블 BL을 무시하십시오.
BL은 T1.ID가있는 PF에서 아무 것도 반환하지 않는지 확인하는 세 번째 주소 테이블입니다. BL에 행이 있으면 주소를 가져옵니다.
지금은 다음과 같은 코드가 있으며 UNION을 사용하지 않고도 별도로 오랫동안 실행됩니다! 이 논리를 효율적으로 작성할 수있는 방법은 무엇입니까? 도와주세요!
select T1.ID, TA.ADDRESS,T1.TOTALS
from T1, TA
where T1.ID = TA.ID and TA.ADDRESS like "1"
UNION
select T1.ID, PF.ADDRESS,T1.TOTALS
from T1, PF
where T1.ID = PF.ID and PF.ADDRESS like "2"
and not exists(select 1
from TA
where TA.ID = T1.ID
and TA.ADDRESS like "1")
UNION
select T1.ID, BL.ADDRESS, T1.TOTALS
from T1, BL
where T1.ID = BL.ID and BL.ADDRESS like "3"
and not exists(select 1
from TA
where TA.ID = T1.ID
and TA.ADDRESS like "1")
and not exists(select 1
from PF
where PF.ID = T1.ID
and PF.ADDRESS like "2")
안녕하세요 @tweetybird. 내가 귀하의 게시물을 형식화 한 것을 알게되었을 것입니다. Stack Overflow의 요지는 코드를 코드로 나타나게하려면 앞에 4 칸 이상을 놓으십시오. 당신의 서술에서 "if"라는 단어를 얼마나 자주 보았는지 알면 SQL 함수 coalesce()에 익숙합니까? 대부분의 데이터베이스가이를 지원합니다. 당신의 힘은 알 수 없기 때문에 말할 수는 없지만 (힌트 힌트) –