8 개의 테이블을 함께 결합하는 기존 SQL 요청이 있습니다. 3 개의 모어 테이블을 추가하여 내 데이터에 성적인 정보를 추가해야합니다.여러 테이블에서 SQL 조건부 조인을 수행하는 방법은 무엇입니까?
빨간색 상자의 부분은 내가 추가 할 수있어 하나입니다
이 작업을 위해, 우리는 (other_tables
에 번들) 6 개 테이블을 무시할 수 있습니다. 나는 약간 조건을 존중하는 request
를 추가하고 싶다. 아무도 발견되지 않으면 나는 여전히 사람을 원하지만 Request
칸에 아무런 데이터도 없다.
지금까지이 문제를 시도했지만 복수형 left join
은보기 흉한 것으로 보입니다.
Select [...], request.Id
From [Action] inner join [other tables on ...] inner join
Person on Action.PersonId = Person.Id left JOIN
request as r on r.PersonId = Person.Id left JOIN
Subject as s on s.SubjectId = r.SubjectId left JOIN
TypeRequest tr on tr.IDSujet = s.SubjectId
Where
([already existing conditions]) and typeRequest = 'MOVE' (?)
그리고 한 번 더 내가 원하는 바꿔하기 : 또한, (다른 테이블에) 몇 가지 필터에 따라 나에게 모든 actions
를 얻기가 링크 된 person
를 얻을. person
에 Request
의 특정 TypeRequest
이있는 경우 Request id
을 데이터 행에 추가하십시오.
내가 "너무 포괄적"쓴 때문에와 쿼리 추가'(변경되지해야하지만) 더 결과를 반환 join' 떠났다. 그리고 3'' 왼쪽 join'은'request'에'left join','subject'에'inner join','typeRequest'에 있어야하기 때문에 추한 느낌이 듭니다. – Kraz
공통적으로 1 개의 필드가있는 세 개의 테이블이있는 경우 선택 및 2 개의 조인을 사용하여 세 개의 테이블 모두에서 결과를 얻을 수 있습니다. 어쩌면 당신의 테이블이 지나치게 표준화되어있을 수도 있습니다. – b3ko
답변에 제안한 내용을 사용했는데 제대로 작동하는 것 같습니다. 감사. (나는 DB 구조도 바꿀 수 없다). – Kraz