2016-10-29 3 views
0

내가 가지고있는 다음과 같은 세 가지 테이블 :쿼리 조인 테이블

Medaltypes

id   name   description 
6   Medalname  Right on! 
7   Medalname2  Aswsome 
8   Medalname3  Allright 

메달

id   medaltype  userref 
1   6    MYUSERNAME 
2   7    MYUSERNAME 
3   6    OTHERUSER 
4   6    OTHERUSERALSO 

Userprofiles

userid  userref 
1   MYUSERNAME 
2   OTHERUSER 
3   OTHERUSERALSO 

내가 원했던 것은 얻은 onces 및 onces를 포함하여 특정 사용자 ID에 대한 모든 medaltyp의 결과입니다. 사용자 ID 1이 결과로 될 것처럼 : 나는 왼쪽과 Medaltypes 및 메달과 함께 목록을 얻을 수

Medalname  - Earned 
Medalname2  - Earned 
Medalname3  - To be earned 

에 가입하지만 최대한 빨리 (특정 사용자 ID에 혼자 질의를하자)의 참여로이 감소 Userprofiles 명부.

이 쿼리는 어떻게 표시됩니까?

답변

2

당신은 LEFT JOIN를 사용하기를 원하지만 사용자의 조건은 ON 절에 갈 필요 :

select ml.name, 
     (case when m.id is not null then 'EARNED' else 'TO BE EARNED' 
     end) 
from medaltypes ml left join 
    medals m 
    on m.medaltype = ml.id and 
     m.userref = 'MYUSERNAME'; 

데이터 구조가 어색하다. Medals에는 userref; 그것은 사용자의 ID를 포함해야합니다.