2012-03-07 64 views
0

我已經閱讀了一些與此相關的主題,但一直未能找到適合我的解決方案 - 也許我誤解了一些我遇到的示例。MySQL IF&Left Joins - 語法?

這是我現有的查詢,這應該有助於理解我想要完成的工作;

SELECT type, refid, status, shortname, IsStore, IsProduct 
FROM user_contributions c 
WHERE UserID='#getuser.UserID#' 
ORDER BY ID DESC 
LIMIT 20 

'IsProduct'和'IsStore'的值總是爲NULL或是 - 每行都有一個或另一個。

現在,我需要做的是根據'IsStore'或'IsProduct'(還有我?)的值,在'stores'表或'products'表上進行左連接。例如,如果IsStore的值爲是,我將添加到左加入商店WHERE ID = refid

假設我需要保持結果字段一致,我會使用'AS標題'作爲商店名稱或產品名稱輸出一致。

我不確定我是否已經解釋得非常好,所以請澄清一下,如果是這樣的話。任何幫助將非常感激!

+1

有什麼問題嗎? – 2012-03-07 12:32:37

回答

2

只是,條件添加到一起:

SELECT type, refid, status, shortname, IsStore, IsProduct 
FROM user_contributions c 
LEFT JOIN stores ON (stores.id = c.refid AND IsStore = "Yes") 
LEFT JOIN products ON (products.id = c.refid AND IsProduct = "Yes") 
WHERE UserID='#getuser.UserID#' 
ORDER BY ID DESC 
LIMIT 20 
+0

哇!感謝吉姆,我完全不知道這可能是那麼簡單 - 我遇到的所有其他事情都比這更復雜,謝謝! – Lee 2012-03-07 12:46:02

+0

@Lee沒問題:) – Jim 2012-03-07 12:48:41