2013-11-27 70 views
0

我有一個表events表,我正在做一個選擇,以顯示一個網格與選擇結果。MYSQL - 加入1表或其他表,具體取決於是否有匹配

events表有一個名爲s_code的列。 s_code值來自suppliersmembers表。

我會怎麼做一個JOIN來檢查suppliersmembers表來獲取代碼的名稱,而不必在兩個memberssuppliers表像下面我的查詢做了LEFT JOIN。基本上我只想要b.s_name,我現在有b.s_namec.s_name

SELECT a.s_id, b.s_name, c.s_name, a.s_date, 
     a.s_description, d.s_name, a.s_actiondate,  
     e.s_name, a.s_emailed, a.s_status 
    FROM events AS a 
    LEFT JOIN members AS b ON a.s_code = b.s_code 
    LEFT JOIN suppliers AS c ON a.s_code = c.s_code 
    LEFT JOIN webuser AS d ON a.s_userid = d.s_ai 
    LEFT JOIN webuser AS e ON a.s_actionuserid = e.s_ai 
WHERE a.s_status = 'A' 
    AND a.s_userid = '1' 
    AND a.s_transactionstatus = 'A' 
+0

當你說'我有兩個b.s_name和c.s_name'的地方是不同的標題你想要哪一個?當名字在兩個或者當它在一個或另一個時? –

+0

該名稱只能在一個或另一個。我想要做一個單一的連接來查看成員名稱,如果沒有匹配,那麼它必須查看供應商。 – bass71982

回答

3

只是把coalesce這兩列合併成一個,如果第一個是非null返回那個,否則第二個;

SELECT a.s_id, COALESCE(b.s_name, c.s_name) s_name, a.s_date, ... 
+1

謝謝你,作品很棒:) – bass71982

相關問題