我想加入两个表,产品和广告系列产品 表格看起来像这样。
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"根据正在查找的广告系列进行更改。
我无法想出解决这个问题的方法,是否有一个我想要的简单解决方案?
答案 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)