2014-03-29 101 views
1

我有一個需求,我需要從下面的兩個表中找到form_id,form_name和owner_name。但是,如果owner_id是「公民」,則所有者名稱將顯示爲「公民」,並且如果其他值(例如owner_level_1)將顯示爲表2中的所有者名稱。我無法在table2中插入owner_name'citizen'的行。有條件的數據從兩個mysql表檢索

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 

執行查詢後的結果應該是這樣的:

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

我不能寫MySQL查詢此。任何建議...

在此先感謝。

+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

請考慮接受最好解決您的問題的答案。此外,您可以輕鬆地提出您認爲有用的答案。這是比寫作評論更好的「感謝」。 – 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; 
相關問題