发出 sql 查询以获取结果
Issue with sql query to get the results
我的 sql 查询有问题。这就是 table 结构的样子。
场景是订单中有订单详情table(最初发货详情id为空)并且订单商品也相应保存。发送订单时,driver 可以 select 一个或多个订单。假设如果他 select 的两个订单('CC0-C1B-50B-63B' 和 'FB2-FC6-57B-DD8')一条新记录被添加到 shipping_details table(所以位置数是 2 in我们的案例)和两条记录相应地保存在 Delivery_Place table 中。
我想要的:如果我 select 没有 'CC0-C1B-50B-63B' 的订单,我想得到所有的交货订单(在我们的例子中还有另一个订单是 'FB2-FC6-57B-DD8' 和结果应该是那 2 个订单)和 orderd_items table 中这 2 个订单的 departmentID。 (如果一个订单有多个项目,所有项目都在同一个部门)
所以我尝试了这个查询,
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。
这是数据table
更新了输入数据
订单Table
送货详情Table
Ordered_items table(列:orderedItemsID、FKItemID、数量、大小、FKDepartmentID、FKOrderID)
部门Table
那么如何修改此查询以获得该结果呢?
谢谢。
这就是我取得结果的方式,
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
这是结果,
我的 sql 查询有问题。这就是 table 结构的样子。
场景是订单中有订单详情table(最初发货详情id为空)并且订单商品也相应保存。发送订单时,driver 可以 select 一个或多个订单。假设如果他 select 的两个订单('CC0-C1B-50B-63B' 和 'FB2-FC6-57B-DD8')一条新记录被添加到 shipping_details table(所以位置数是 2 in我们的案例)和两条记录相应地保存在 Delivery_Place table 中。
我想要的:如果我 select 没有 'CC0-C1B-50B-63B' 的订单,我想得到所有的交货订单(在我们的例子中还有另一个订单是 'FB2-FC6-57B-DD8' 和结果应该是那 2 个订单)和 orderd_items table 中这 2 个订单的 departmentID。 (如果一个订单有多个项目,所有项目都在同一个部门)
所以我尝试了这个查询,
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。
这是数据table
更新了输入数据
订单Table
送货详情Table
Ordered_items table(列:orderedItemsID、FKItemID、数量、大小、FKDepartmentID、FKOrderID)
部门Table
那么如何修改此查询以获得该结果呢?
谢谢。
这就是我取得结果的方式,
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
这是结果,