2010-01-08 8 views
0
SELECT 
    description 
FROM 
    diagnosis_mapping 
LEFT JOIN 
    diagnosis_codes 
ON 
    diagnosis_codes.codeid = diagnosis_mapping.codeid 

SELECT 
    description 
FROM 
    diagnosis_mapping 
LEFT JOIN 
    diagnosis_codes 
ON 
    diagnosis_codes.codeid = diagnosis_mapping.secondarycodeid 

이 두 쿼리를 병합하고 단일 결과 집합으로 정보를 얻는 방법은 무엇입니까? 먼저 codeid와 일치해야하고 두 번째 코드에서 두 코드의 설명을 가져 오기 위해 동일한 mastertable에 대한 secondcodeid와 일치해야합니다. MySQL은 당신이 얻을 원하는 것을 알 수 있도록Mysql join query

당신이 하나 개의 쿼리에 조인 할 수

답변

5

, 그냥 테이블 이름에 별칭을 제공 :이 예에서

SELECT 
    a.description desc_a, 
    b.description desc_b 
FROM 
    diagnosis_mapping 
LEFT JOIN 
    diagnosis_codes a 
ON 
    a.codeid = diagnosis_mapping.codeid 
LEFT JOIN 
    diagnosis_codes b 
ON 
    b.codeid = diagnosis_mapping.secondarycodeid 

a 첫 번째 테이블의 별칭입니다 다른 하나는 b입니다. 별칭 이름을 테이블에 부여하면 MySQL (및 다른 SQL 인식 데이터베이스)은 기본적으로이 테이블을 두 개의 개별 테이블로 처리하고 이들 테이블에서 데이터를 독립적으로 가져옵니다.

+2

또한 최상의 결과 필드에 별칭을 제공 (fi PHP의'mysql_fetch_assoc')는 테이블 이름 구성 요소를 무시하고 그렇지 않으면 단 하나의'description' 필드만을 돌려줍니다. ('a.description desc_a, b.description desc_b') – Wim

+0

@Wim, 당신은 절대적으로 옳았습니다. 나의 예는 그들 없이는 쓸모가 없을 것입니다. 내 대답을 편집했습니다. –

+0

그것의 일. 감사. 결과 필드에 별칭을 지정하는 아이디어조차 멋지다. 그 위대한. 나를 도와 주신 모든 분들께 감사드립니다. – ASD

0
SELECT description FROM (diagnosis_mapping LEFT JOIN diagnosis_codes ON (diagnosis_codes.codeid = diagnosis_mapping.codeid)) LEFT JOIN diagnosis_mapping ON (diagnosis_codes.codeid = diagnosis_mapping.secondarycodeid) 

확실하지 당신이 필요하지만, 무엇을하려고 그게 전부 경우는 (일부 맞춤법 검사 및 필요 수있는 SQL 오류가있는 경우 일부는 "있는 그대로"추가)