【发布时间】:2018-06-07 11:18:58
【问题描述】:
我想知道是否有人可以帮助我处理这个复杂的 mysql 查询。
我有 3 张桌子:
表 #1:Customer_Order 有两列 customer_id 和 order_id
表 #2:Order_Payment 也有 order_id
表 #3:Orders 有一个 id,这是一个订单 ID。
如果可以根据order_id 检索特定客户的所有付款,我正在徘徊。我只有一个order_id,但我没有customer_id,基于order_id,我应该能够检索所有付款,甚至是那些尚未付款的付款。
这就是我的做法:
我首先检索已知的订单
select * from customer_order where order_id = 1351
然后我尝试根据返回的内容构建查询
选择 * from (
select * from customer_order where order_id = 1351
) c1
左连接
(select op.order_id, customer_id from order_payment op inner join customer_order co on op.order_id = co.order_id
) c2 上 c1.customer_id = c2.customer_id
我也试试
从 (
从 `order_payment` 中选择 customer_id 内部加入 `customer_order` on `customer_order`。`order_id` = `order_payment`.`order_id`
其中 order_payment.order_id=1351
按 `created_at` asc 排序)作为 s
在 s.customer_id = customers.id 上内部加入客户
但我只收到一笔订单付款,而不是那些尚未付款的订单。
如果有人能帮助我解决问题,我将不胜感激。
【问题讨论】:
-
你希望你的输出看起来如何?
-
我会跳过直接的 SQL 查询,而是利用 Laravel 的 Eloquent 和关系。
-
我只是想不出在 Laravel 中做到这一点的方法。我的意思是我的订单有一个透视表——customer_order 和 order_payment,但是如何将它们全部连接在一起以显示已支付的内容,而不是我做不到的。我能做的是运行查询两次。首先检索已支付的所有内容,然后运行尚未支付的所有内容。但这是正确的方法吗?
标签: php mysql laravel-5.3