我遇到了SQL查询问题。这就是表结构的样子。
方案是订单表中有订单详细信息(最初发货详细信息ID为空),并且相应的订单项也会保存。在分派订单时,司机可以选择一个或多个订单。假设他选择了两个订单('CC0-C1B-50B-63B'和'FB2-FC6-57B-DD8'),新的记录被添加到shipping_details表中(因此在我们的例子中没有地方是2)和两个记录相应地保存在Delivery_Place表中。
我想要的:如果我选择订单号'CC0-C1B-50B-63B',我想获得所有的交货订单(在我们的情况下,还有另一个订单是'FB2-FC6-57B-DD8'和结果应该是那2个订单)和orderd_items表中的departmentID用于那2个订单。 (如果单个订单中有多个项目,则所有项目都在同一个部门中)
所以我尝试了这个查询,
select oi.FKOrderID,dp.deliveryPlaceID,dp.FKShippingDetailsID,dp.city,dp.position,oi.FKDepartmentID
from
`order` o join `shipping_details` sd
on o.FKShippingDetailsID = sd.shippingDetailsID
join `ordered_items` oi
on o.orderID = oi.FKOrderID
join `delivery_places` dp
on dp.FKShippingDetailsID=sd.shippingDetailsID
where o.orderID = 'CC0-C1B-50B-63B'
group by dp.deliveryPlaceID
order by dp.position asc ;
结果就是这样,
但是对于第二行,我应该将'FB2-FC6-57B-DD8'作为FKOrderID并将'11'作为FKDepartmentID。
这是数据表
使用输入数据更新
订单表
送货明细表
Ordered_items表(列:orderedItemsID,FKItemID,数量,大小,FKDepartmentID,FKOrderID)
部门表
那么如何修改此查询以获得该结果?
感谢。
答案 0 :(得分:0)
这就是我实现结果的方式,
select
distinct(oi.FKOrderID),dp.deliveryPlaceID,dp.FKShippingDetailsID,dp.city,dp.longitude,dp.latitude,dp.timestamp,dp.position,dp.status,o.orderStatus,oi.FKDepartmentID
from
`ordered_items` oi,
`order` o join `shipping_details` sd
on o.FKShippingDetailsID = sd.shippingDetailsID
join `delivery_places` dp
on dp.FKShippingDetailsID=sd.shippingDetailsID
where o.orderID = 'CC0-C1B-50B-63B'
and
oi.FKOrderID in (select orderID from `order` where
FKShippingDetailsID=o.FKShippingDetailsID)
group by oi.FKOrderID
order by dp.position asc
这是结果,