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
)