OUTER JOIN 후 WHERE 조건. 0 4 804

by 한번사는인생 [SQLServer] [2022.01.05 11:28:37]


OUTER 조인 후, 인풋 파라미터에의 값에 따라서 조건을 주고 싶습니다.

예를 들어서,

SELECT *

FROM A

LEFT OUTER JOIN B

ON A.AA = B.BB

WHERE 이부분에서 @INPUT 값이 NULL 이거나 0 이면, LEFT OUTER JOIN 한 테이블에 상관없이 A 테이블 전체 조회.

@INPUT 값이 1이면, A와 B를 조인한 결과값만 나왔으면 합니다.

좋은 방법좀 알려주세요~

 

by 마농 [2022.01.05 12:11:19]
SELECT *
  FROM a
  LEFT OUTER JOIN b
    ON a.aa = b.bb
 WHERE (@input = 0)
    OR (@input = 1 AND b.bb IS NOT NULL)
;

 


by 한번사는인생 [2022.01.05 12:14:24]

이 방법이 최선인가요?ㅠㅠ저도 이 방법을 생각해보긴 했는데

혹시나 더 좋은 방법이 있을까 싶어서요.ㅜ.ㅜ


by 마농 [2022.01.05 12:23:51]

최선의 기준이 뭘까요?
다양한 방법이 있을 수 있을 것입니다.
구문을 최대한 간결하게 할 것인지?
효율을 최대한 높일 것인지?
질문에는 * 를 사용하는데 필요한 컬럼명만 사용하는게 좋습니다.
필요한 컬럼이 뭔지에 따라 효율적인 쿼리가 달라질 수도 있습니다.
테이블의 인덱스 정보나 분포도, 데이터량, 테이블간의 관계 등 다양한 정보도 확인해야 합니다.


by 한번사는인생 [2022.01.05 17:50:54]

역시 날카로우십니다.

답변 고맙습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입