从SQL中的SELECT中选择

时间:2014-11-10 09:11:19

标签: sql oracle

我在小型食品仓库工作,我们为小商店准备货物。我们使用WMS完成工作。出于某些原因,我需要使用系统中的SQL builder从数据库中获取一些数据。情况就是这样。

要获取已发送特定产品的商店的信息,请使用此查询:

select cd.cage_nbr, cd.units_of_product, pk.to_store
from cage_dtl cd
inner join item_master im on im.sku_id=cd.sku_id
INNER JOIN pkt_hdr pk ON pk.pkt_ctrl_nbr=cd.pkt_ctrl_nbr
where im.barcode = '105683004'
and cd.open_cage_batch = 31102014

要查看我们的客户使用此查询分配的商店列表和产品数量:

select sd.to_store, sd.alloc_qty, sd.alloc_batch, im.size_desc
from store_distro sd
inner join item_master im on im.sku_id=sd.sku_id
where im.barcode = '105683004'
and sd.alloc_batch = 31102014

但是我需要一个SQL来向我展示任何尚未发送产品的商店。 我会提供任何帮助

由于

2 个答案:

答案 0 :(得分:2)

您可以尝试为第一个查询执行LEFT JOIN并检查NULL。像

这样的东西
select cd.cage_nbr, cd.units_of_product, pk.to_store
from cage_dtl cd
left join item_master im 
on im.sku_id = cd.sku_id and im.barcode = '105683004'
LEFT JOIN pkt_hdr pk 
ON pk.pkt_ctrl_nbr = cd.pkt_ctrl_nbr
where cd.open_cage_batch = 31102014
and pk.to_store IS NULL

答案 1 :(得分:0)

我在这里学习了如何选择SELECT(SELECT' s): SQL SELECT Union SELECT FROM (Select...)

在这种情况下,它会像......

SELECT (columns)
FROM
  (select cd.cage_nbr, cd.units_of_product, pk.to_store
  from cage_dtl cd
  inner join item_master im on im.sku_id=cd.sku_id
  INNER JOIN pkt_hdr pk ON pk.pkt_ctrl_nbr=cd.pkt_ctrl_nbr
  where im.barcode = '105683004'
  and cd.open_cage_batch = 31102014
  ) AS dispatched
JOIN
  (select sd.to_store, sd.alloc_qty, sd.alloc_batch, im.size_desc
  from store_distro sd
  inner join item_master im on im.sku_id=sd.sku_id
  where im.barcode = '105683004'
  and sd.alloc_batch = 31102014
  ) AS allocated
ON (stuff)