mysql - 在 Laravel 中使用不同的查询左连接
问题描述
我有 2 个这样的表:
产品大师:
活动产品:
我使用此查询从 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,所以我的结果是重复行:
现在我希望它通过不同的查询仅返回 1 个 product_id。我试过这个:
->leftJoin(\DB::raw("(SELECT DISTINCT product_id FROM dmspro_mys_campaign_product) as cp"), 'cp.product_id', '=', "{$this->table}.product_id");
但这是关于我的查询语法的错误。
我怎么能做到这一点?
解决方案
如果您使用的是 MySQL,请在运行主查询之前运行以下查询。
SET SESSION sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY', ''));
推荐阅读
- kotlin - 如何将业务逻辑与表示分离?
- python - 使用 Python 从 Windows 文件对话框上传文件
- graphql - 如何在一些任意反应应用程序中集成反应管理组件?
- javascript - TypeError:无法读取未定义的属性“目标”-React JS
- java - JDBC SQLException 从存储过程中捕获抛出异常
- arrays - 如何使用VB将数组应用于Excel中的图形数据系列
- ios - iOS10读取bundle文件失败
- r - R:使用上一行新生成的数据
- javascript - 我试图将我的 .span 放在我的 .texto 旁边,但是当我设置 .span 的宽度时,它们会崩溃,我该怎么办?
- react-native - 使用 Expo App 响应本地本地推送通知