2012-07-29 64 views
3

我正在尋找一個想法或最佳實踐來執行以下:不同的MySQL基於用戶級別聯接查詢

我有表: profile包含基本信息(ID,電子郵件,傳球,LVL) profile_user包含(PID,姓名,年齡等。) profile_mod包含(PID,COM​​PANY_NAME,金錢等)

,你可以看到,我會做左連接兩個表來獲取全部信息,但連接將全部基於屬性lvl。如果lvl = 1,它將在profile_user上加入並且lvl = 2將在profile_mod上執行加入。

我的問題是,我不想對每個查詢執行檢查以獲取lvl,然後在其他兩個表上執行左連接。我想知道是否有這種情況下的最佳做法。

回答

3

你可以這樣做:

SELECT * 
FROM  profile a 
LEFT JOIN profile_user b ON a.id = b.pid AND a.lvl = 1 
LEFT JOIN profile_mod c ON a.id = c.pid AND a.lvl = 2 

如果lvl1,在profile_modprofile_user字段將填充和值的值將是NULL

同樣地,如果是lvl2,對於profile_user字段的值將是NULL,但在profile_mod值將被填充。

+0

我怎麼能自動省略選定的屬性,而不是將它們作爲NULL值? – fawzib 2012-07-29 11:25:08