MySQL IF&左连接 - 语法?

时间:2012-03-07 12:31:51

标签: mysql

我已经阅读了一些与此相关的线程,但未能确定一个对我有用的解决方案 - 也许我误解了我遇到的一些例子。

这是我现有的查询,它应该有助于理解我想要完成的任务;

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

'IsProduct'和'IsStore'的值始终为NULL或Yes - 每行都有一个或另一个。

现在,我需要做的是在'商店'表或'产品'表上进行左联接,具体取决于'IsStore'或'IsProduct'的值(仍在我身边?)。例如,如果IsStore的值为yes,我将添加LEFT JOIN Stores WHERE ID = refid

假设我需要保持结果字段的一致性,我会对storename或productname使用'AS title'来使输出保持一致。

我不确定我是否已经特别好地解释了这一点,所以如果是这样的话请请澄清。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分: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