데이터베이스 개발자 질문과 답변 게시판
데이터베이스 개발/운영 관련 질문과 답변을 올리는 게시판입니다. 궁금하신 내용을 이곳에서 문의하시면 SQLER 분들의 답변을 받으실 수 있습니다. 문의를 하실때에는 최근 작업하신 특이 사항이나, 장애 발생 전 상황을 상세히 올려 주시면 답글을 적어주시는 SQLER분들의 답변이 더 정확할 수 있으니 도움 되시길 바랍니다. 쿼리 문의일 경우, 실제 문제가 재현되는 테이블생성, 샘플데이터 생성 쿼리를 함께 올려 주시면 더 빠르고 정확한 쿼리 문의 응답이 가능합니다.
A테이블
==========================
no | name | age | kamok | jumsu
------------------------------------------
1 홍길도 25 국어 58
2 김철수 45 수학 77
3 최학수 11 사회 47
...
...
...
B테이블(추천테이블)
=======================
no | A_NO | recomm
------------------------------------
1 3 추천
2 1 추천
게시판인데요 보통은 이름과 점수로 조회를 하고 옵션으로 추천이된 사람을 조회를 하는겁니다
보통 조회 쿼리는 아래와 같이 했습니다
select * from A테이블 where name = 'xxx'
그런데 옵션으로 추천을 체크하고 조회를 클릭하면 이때 조인을 하는 쿼리를 따로 만들어야 하나요?
어떻게 하면 좋을까요?
성능은 전혀 고려되지 않았습니다 -_-;;;
@recomm 이 추천 옵션의 체크값을 받는 인자라고 가정하고
쿼리 작성하였습니다.
Declare @recomm Decimal(1)
-- Data구분 : 1 = 추천조회, 2 = 비조회
Select @recomm = 2
With A As
(
Select '1' As no,'홍길동' As name,25 As age,'국어' As kamok,58 As jumsu Union All
Select '2' As no,'김철수' As name,45 As age,'수학' As kamok,77 As jumsu Union All
Select '3' As no,'최학수' As name,11 As age,'사회' As kamok,47 As jumsu
)
,B As
(
Select '1' As no,3 As A_NO,'추천' As recomm Union All
Select '2' As no,1 As A_NO,'추천' As recomm
)
Select
A.no
,A.name
,A.kamok
,A.jumsu
,(
Case When @recomm = 1
Then ISNULL(B.recomm,'')
Else ''
End
) As recomm
From A
Left Outer Join
B
On A.no = B.A_NO
Where (
Case When @recomm = 1
Then A.no
Else 1
End
)
=
(
Case When @recomm = 1
Then B.A_NO
Else 1
End
)