在Laravel中使用独特查询左联接

时间:2019-10-03 09:52:10

标签: mysql laravel

我有2张这样的桌子:

product_master:

enter image description here

campaign_product:

enter image description here

我使用此查询从product_master和campaign_product表中获取数据:

$oSelect = $this->select(
    "{$this->table}.product_code",
    "{$this->table}.product_display_name",
    'dmspro_mys_campaign_product.campaign_code',
    'dmspro_mys_campaign_product.product_id',
)->leftJoin(
    'dmspro_mys_campaign_product', 
    \DB::raw("SELECT DISTINCT product_id FROM dmspro_mys_campaign_product"), '=', "{$this->table}.product_id"
);

return $oSelect->get();

但是您可以看到,在我的campaign_product表中,有2行相同的product_id,所以我的结果是重复的行:

enter image description here

现在,我希望它通过不同的查询仅返回1 product_id。 我尝试过:

 ->leftJoin(\DB::raw("(SELECT DISTINCT product_id FROM dmspro_mys_campaign_product) as cp"), 'cp.product_id', '=', "{$this->table}.product_id");

但这是关于我的查询语法的错误。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

如果您使用的是MySQL,请先运行以下查询,然后再运行主查询。

.firebaserc