【发布时间】:2021-05-18 13:52:50
【问题描述】:
主表
CREATE TABLE `orders` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`nama` varchar(255) NOT NULL,
`lat` float(10,6) DEFAULT NULL,
`lng` float(10,6) DEFAULT NULL,
PRIMARY KEY (`id`)
)
第二张桌子
CREATE TABLE `order_seller_detail` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`order_id` int(11) DEFAULT NULL,
`sequence` int(2) DEFAULT NULL,
PRIMARY KEY (`id`)
)
我在尝试使用右连接时遇到问题。它只返回唯一的行。但它们是表 order_seller_detail 中的多条记录,与带有 id 的订单表相关联。它应该是多行。 我的代码:
$query = Order::find()
->rightJoin('order_seller_detail', 'order_seller_detail.order_id=orders.id')
->all();
我还使用以下命令打印查询:
$query = Order::find()
->rightJoin('order_seller_detail', 'order_seller_detail.order_id=orders.id');
$query->createCommand()->getRawSql();
SELECT `orders`.* FROM `orders` RIGHT JOIN `order_seller_detail` ON rder_seller_detail.order_id=orders.id
当我手动运行此查询时,它工作正常并为同一订单提供多行,但是当我使用 yii2 活动记录的用户时,它只给了我唯一的行。
请帮忙
感谢和问候, 巴尔吉特
【问题讨论】:
-
右连接也会添加没有顺序的order_seller_detail,但这应该是不可能的,所以使用连接并跳过右
-
感谢您的快速回复,我使用了 ->join('RIGHT JOIN','order_seller_detail', 'order_seller_detail.order_id = orders.id') 但同样的问题返回不同的订单
-
问题不是join,你试过直接在数据库中select吗?
-
@nbk 是的,我们尝试在数据库中手动运行查询,结果是 fin 并显示了多个主表记录 SELECT
orders.* FROMordersRIGHT JOINorder_seller_detailON rder_seller_detail.order_id =订单.id。但是当我使用 yii2 activequery 时它给出的结果不一样
标签: mysql yii2 unique right-join