如何高效查询SQL语句 表A 商品 日期 序列号 方式 仓库 001 2011-1-1 0000001 入库 A 001 2011-1-1 0000002 入库 A 001 2011-1-1 0000003 入库 A 001 2011-1-1 0000004 入库 A 001 2011-1-1 0000005 入库 A 001 2011-1-1 0000006 入库 A
表B 商品 日期 序列号 方式 仓库 001 2011-2-1 0000001 采购退库 A
表C 商品 日期 序列号 方式 仓库 001 2011-5-1 0000003 销售出库 A 001 2011-7-1 0000003 销售出库 A 001 2011-5-1 0000004 销售出库 A
表D 商品 日期 序列号 方式 仓库 001 2011-6-1 0000003 销售退库 A
在库:是入库的时候;销售退库 后也在库存 没有在库是:采购退库和销售出库
现在的问题是如何实现高效查询每个串号的状态以及是否在库
------解决方案--------------------
SQL code
select a.*,
(case when b.序列号 is not null then 销售退库
when c.序列号 is not null then 销售出库
else 在库 end)
from 表A a left join 表B b on a.序列号=b.序列号
left join 表C c on a.序列号=c.序列号
------解决方案-------------------- 前提:所有的销售出库、销售退库、采购退库都是基于“采购入库”主表数据; 我也觉得所有的后续分析都是基于2楼的业务逻辑进行处理,至于性能我也不太清楚哈,只知道left join是比较耗费性能的,同时需要考虑时间参数、数据异常等因素。