2014-11-23 34 views
0

我用下面的查詢來獲取數據,但現在我需要再次加入同一個表4次或更多時間,所以我想找到替代方式。Mysql alternativ加入多個時間表

SELECT t1.id,t1.name,t2.name as name2,t3.name as name3,t4.name as name4.... 
FROM first_table as t1 
left join second_table as t2 on t2.code = t1.f_name, 
left join second_table as t3 on t3.code = t1.l_name, 
left join second_table as t4 on t4.code = t1.a_name, 
....... 
..... 
..... 

和許多聯接,所以我怎麼能以更好的方式(高效)獲得相同的結果?

+0

爲什麼你需要在同一個表多次參加?它可能只能使用一個連接,但它取決於上下文... – fthiella 2014-11-23 11:18:43

+0

,因爲我有第一個表中有多個列與第二個表的相同列有關係,例如t1.f_name是123和相關的真實姓名f_name = 123位於second_table的名稱列中,並且對於l_name和a_name的first_table的名稱爲 – jones 2014-11-23 11:24:35

+0

,請搜索如何在MySQL中執行遞歸查詢。有幾種方法,沒有任何真正微不足道的。如果卡住了,請回來尋求幫助。 – koriander 2014-11-23 11:34:47

回答

2

你可以用這個查詢嘗試:

SELECT 
    t1.id, 
    t1.name, 
    MAX(CASE WHEN t2.code = t1.f_name THEN t2.name END) AS name2, 
    MAX(CASE WHEN t2.code = t1.l_name THEN t2.name END) AS name3, 
    MAX(CASE WHEN t2.code = t1.a_name THEN t2.name END) AS name4 
FORM 
    first_table AS t1 LEFT JOIN second_table AS t2 
    ON t2.code IN (t1.f_name, t1.l_name, t1.a_name) 
GROUP BY 
    t1.id, 
    t1.name