2013-03-22 3 views
0

두 개의 테이블을 결합하려고합니다. 두 개의 열은 다른 테이블의 ID를 포함합니다.MySQL은 두 개의 열에서 두 개의 테이블을 결합합니다.

표 사용자

id | first_name | last_name | 
---+------------+-----------+ 
1 | John  | Doe  | 
2 | Jane  | Doe  | 
3 | Some  | Name  | 

표 스탬프 내가 보여주고 싶은 무엇

id | date | applicant_id | app_by_id | 
---+------------+---------------+-----------+ 
1 | 2013-03-15 | 1    | 2   | 
2 | 2013-03-10 | 2    | 3   | 
3 | 2013-03-13 | 2    | 1   | 

:

date | applicant | app_by | 
------------+-----------+-----------+ 
2013-03-15 | John Doe | Jane Doe | 
2013-03-10 | Jane Doe | Some Name | 
2013-03-13 | Jane Doe | John Doe | 

내 쿼리 :

SELECT CONCAT_WS(' ', NULLIF(t1.first_name, ' '), NULLIF(t1.last_name, ' ')) AS applicant, 
    CONCAT_WS(' ', NULLIF(t1.first_name, ' '), NULLIF(t1.last_name, ' ')) AS app_by, 
    t2.date 
    FROM users t1 
    INNER JOIN stamp t2 ON applicant_id = t1.id 
,536,913,632 10

내 쿼리에 문제가 있음을 알고 있지만 해결 방법을 모르겠습니다.

답변

0

LEFT JOIN을 사용하면 다른 조인 조건이 실패하더라도 각 열의 값을 얻을 수 있습니다. 다음 코드는 일반 JOIN에서도 사용할 수 있습니다.

SELECT s.date, 
CONCAT_WS(' ', NULLIF(u1.first_name, ' '), NULLIF(u1.last_name, ' ')) AS applicant, 
CONCAT_WS(' ', NULLIF(u2.first_name, ' '), NULLIF(u2.last_name, ' ')) AS app_by 
FROM stamp s 
LEFT JOIN users u1 ON s.applicant_id = u1.id 
LEFT JOIN users u2 ON s.app_by_id = u2.id 

증명 : http://sqlfiddle.com/#!2/39aff/1/0

+0

주셔서 감사합니다. 이것이 내가 필요한 대답이다. – otezz

0

시도는 대신 조인의

SELECT CONCAT_WS(' ', NULLIF(u1.first_name, ' '), NULLIF(u1.last_name, ' ')) AS applicant, 
     CONCAT_WS(' ', NULLIF(u2.first_name, ' '), NULLIF(u2.last_name, ' ')) AS app_by, 
     s.date 
FROM stamp s INNER JOIN 
     user u1 ON s.applicant_id = u1.id INNER JOIN 
     user u2 ON s.app_by_id = u1.id 
+0

@AdamPlocher 예, 수정이 덕분에 –

0

처럼,이 같은 하위 쿼리를 사용하려고 합류했다.

SELECT date, 
(SELECT CONCAT_WS(' ', NULLIF(first_name, ' '), NULLIF.last_name, ' ')) from USERS WHERE id = s.applicant_id) as applicant, 
(SELECT CONCAT_WS(' ', NULLIF(first_name, ' '), NULLIF.last_name, ' ')) from USERS WHERE id = s.app_by_id) as app_by 
from stamp s 
관련 문제