sql查询问题以获得结果

时间:2015-04-25 13:19:11

标签: mysql join group-by

我遇到了SQL查询问题。这就是表结构的样子。

enter image description here

方案是订单表中有订单详细信息(最初发货详细信息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 ; 

结果就是这样,

enter image description here

但是对于第二行,我应该将'FB2-FC6-57B-DD8'作为FKOrderID并将'11'作为FKDepartmentID。

这是数据表

enter image description here

使用输入数据更新

订单表

enter image description here

送货明细表

enter image description here

Ordered_items表(列:orderedItemsID,FKItemID,数量,大小,FKDepartmentID,FKOrderID)

enter image description here

部门表

enter image description here

那么如何修改此查询以获得该结果?

感谢。

1 个答案:

答案 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  

这是结果,

enter image description here