MYSQL加入(如果可用)

时间:2014-04-05 01:00:14

标签: mysql

我想加入两个表,产品和广告系列产品 表格看起来像这样。

TABLE product id | name

TABLE campaign_products id | fk_campaign | fk_product | note

如果感兴趣

TABLE campaign id | name

在所有情况下,我都需要返回所有产品,如果campaign_products中有一行匹配,那么也要添加这些列的值。 (否则为null)。 请记住,多个产品可以成为多个广告系列的一部分。 以下是我尝试过的内容,在这种情况下,它只返回在campaign_products中包含引用的产品或者在campaign_products中根本不存在的产品,因此如果该产品位于另一个广告系列的campaign_products中,则不会显示在其他不包含该产品的广告系列中。

SELECT product.id productId, product.name productName, campaign_product.note campaignProductNote FROM {产物{1}}

" 2"根据正在查找的广告系列进行更改。

我无法想出解决这个问题的方法,是否有一个我想要的简单解决方案?

1 个答案:

答案 0 :(得分:2)

您需要做的就是将WHERE子句中的条件移动到ON子句中,如下所示:

SELECT 
product.id productId, 
product.name productName, 
campaign_product.note 
campaignProductNote 
FROM product
LEFT JOIN campaign_products ON product.id = campaign_products.fk_product 
AND (campaign_products.fk_campaign = 2 OR campaign_products.fk_campaign IS NULL)