2014-03-29 2 views
1

아래 두 테이블에서 form_id, form_name 및 owner_name을 찾을 필요가있는 요구 사항이 있습니다. 그러나 owner_id가 'citizen'인 경우 소유자 이름은 'citizen'으로 표시되고 다른 값 (예 : owner_level_1)은 table2의 소유자 이름으로 표시됩니다. table2에 owner_name 'citizen'행을 삽입 할 수 없습니다. 나는이에 대한 MySQL의 쿼리를 작성 할 수 없습니다입니다두 개의 mysql 테이블에서 조건부 데이터 검색

form_id form_name owner_name 
------------------------------------------ 
id1  name1  citizen 
id2  name2  alex 
id3  name3  john 
id4  name4  citizen 

: 같은

select * from db.table1; 

form_id form_name owner_id 
--------------------------------------------- 
id1  name1  citizen 
id2  name2  owner_level_1 
id3  name3  owner_level_2 
id4  name4  citizen 


select * from db.table2; 


owner_id owner_name 
-------------------------- 
owner_level_1 alex 
owner_level_2 john 
owner_level_3 mike 
owner_level_4 kristina 

쿼리를 실행 한 후 결과가 있어야한다. 어떤 제안 ...

미리 감사드립니다.

+2

귀하의 시도를 보여주십시오. –

답변

0
SELECT 
    form_id, 
    form_name, 
    IF(db.table2.owner_name IS NULL, db.table1.owner_id, db.table2.owner_name) 
     AS owner_name 
FROM db.table1 
LEFT OUTER JOIN db.table2 ON db.table2.owner_id = db.table1.owner_id; 

이 나의 머리에서 작성된 것입니다 ...

그것을 테이블에 대해서는 작동하지만, n 개가 될 수있는 각 항목에 대해 table1의 owner_id에 넣을 것임에 유의하십시오. 오히려 table2의 owner_id와 일치해야합니다. 이것은 당신이 필요로하는 것이거나 그렇지 않을 수도 있습니다. '시민'을 위해서만 작동하는 spcefic 솔루션을 원한다면 여기 @Saeed에 설명 된 UNION 접근법이 더 나을 것입니다.

+0

고마워 .. 그게 정말 도움이 ... – user3475717

+0

문제를 가장 잘 해결 한 대답을 수락하는 것을 고려해보십시오. 또한, 유용하다고 생각되는 답변을 쉽게 upvote 할 수 있습니다. 코멘트로 쓰는 것이 더 나은 "감사"입니다. – luksch

0
SELECT form_id, form_name, owner_id AS owner_name 
    FROM db.table1 
    WHERE owner_id like 'citizen' 
UNION 
    SELECT form_id, form_name, owner_name 
    FROM db.table1,db.table2 
    WHERE table1.owner_id = table2.owner_id 
0

당신은 무엇을 표시하는 조건부 선택합니다 if를 사용할 필요가

예를 들어,

SELECT IF(owner_id = 'Citizen', 'citizen', owner_name) AS owner_name 
FROM foo; 
관련 문제