求一条SQL语句,望各位仁兄帮忙!
求一条SQL语句,望各位仁兄帮忙!
入库主表信息
Instorage_Id CompanyCode CompanyNmae Remark
-------------------------
AUN20070602001 AUN 康杰有限公司 备注
ASB20070602001 ASB 泰康有限公司 重要客户
EAB20070602003 EAB 乐泰有限公司 重要
AUN20070602002 AUN 康杰有限公司 备注
入库明细表信息
Instorage_id GoodsId Sku GoodsName Number Color
--------------------------------------
AUN20070602001 10002 A-1200 键盘 200 黑色
AUN20070602001 10003 A-2301 鼠标 500 银白色
AUN20070602001 10004 A-5210 机箱 100 黑色
ASB20070602001 20001 A-1001 钢笔 5000 红色
ASB20070602001 20002 A-1002 墨水 1000 蓝色
EAB20070602003 30001 E-4001 打印机 100 白色
EAB20070602003 30002 E-4002 显示器 200 银白
EAB20070602003 30003 E-4003 内存条 500 黑色
EAB20070602003 30004 E-4004 电视卡 100 白色
AUN20070602002 10003 A-2301 鼠标 500 银白色
AUN20070602002 10004 A-5210 机箱 100 黑色
以上有入库主表信息和入库明细表信息,一个主表对应多条明细现在我想查询到主表信息需要主表条件和明细表的条件。
例:查询条件是 主表的Instorage_Id 、CompanyCode、CompanyName
明细表 SKU、GoodsName
现在想查询客户编号(CompanyCode)为AUN 货物的SKU为 A-1200、A-2301、E-4004 入库单位为AUN20070602001的入库主表信息 查询结果为
Instorage_Id CompanyCode CompanyNmae Remark
-------------------------
AUN20070602001 AUN 康杰有限公司 备注
[解决办法]
select distinct a.Instorage_Id,CompanyCode,CompanyNmae,Remark from 入库主表 a left join 入库明细 b
on a.Instorage_Id=b.Instorage_id and a.CompanyCode= 'AUN 'and b.SKU in ( 'A-1200 ', 'A-2301 ', 'E-4004 ')
where a.Instorage_Id= 'AUN20070602001 '
[解决办法]
select distinct a.Instorage_Id,CompanyCode,CompanyNmae,Remark from 入库主表 a left join 入库明细 b
on a.Instorage_Id=b.Instorage_id and b.SKU in ( 'A-1200 ', 'A-2301 ', 'E-4004 ')
where a.Instorage_Id= 'AUN20070602001 ' and a.CompanyCode= 'AUN '
[解决办法]
货物的SKU为 A-1200、A-2301、E-4004 入库单位为AUN20070602001的入库主表信息 ?
为什么会是AUN20070602001
它不是没有E-4004吗?
[解决办法]
select Instorage_Id,CompanyCode,CompanyNmae , Remark
from 入库主表 a
where CompanyCode= 'AUN 'and
exists
(select 1 from from 入库明细表 where Instorage_Id=a.Instorage_Id
and SKU in ( 'A-1200 ', 'A-2301 ', 'E-4004 ')
[解决办法]
select distinct a.*
from 入库主表 a inner join 入库明细 b on a.Instorage_Id= b.Instorage_Id
where a.CompanyCode = 'AUN ' and (b.Sku = 'A-1200 ' or b.Sku = 'A-2301 ' or b.Sku = 'E-4004 ')
and a.Instorage_Id = 'AUN20070602001 '
返回:
Instorage_Id CompanyCode CompanyNmae Remark
-------------------- ----------- ------------- -----------
AUN20070602001 AUN 康杰有限公司 备注
(所影响的行数为 1 行)
------解决方案--------------------
或者这样:
select distinct a.*
from 入库主表 a inner join (
select Instorage_Id from 入库明细 where Sku = 'A-1200 ' or Sku = 'A-2301 ' or Sku = 'E-4004 ') b on a.Instorage_Id = b.Instorage_Id
where a.CompanyCode = 'AUN ' and a.Instorage_Id = 'AUN20070602001 '
返回:
Instorage_Id CompanyCode CompanyNmae Remark
---------------- ----------- ------------ ---------
AUN20070602001 AUN 康杰有限公司 备注
(所影响的行数为 1 行)
[解决办法]
select distinct a.*
from 入库主表 a
inner join 入库明细 b on a.Instorage_Id= b.Instorage_Id
where a.CompanyCode = 'AUN '
and (b.Sku = 'A-1200 ' or b.Sku = 'A-2301 ' or b.Sku = 'E-4004 ')
and a.Instorage_Id = 'AUN20070602001 '
[解决办法]
方法3:
select Instorage_Id,CompanyCode,CompanyNmae , Remark
from 入库主表 a
where a.CompanyCode= 'AUN ' and
exists
(select * from 入库明细 where Instorage_Id=a.Instorage_Id
and SKU in ( 'A-1200 ', 'A-2301 ', 'E-4004 ')) and a.Instorage_Id = 'AUN20070602001 '
返回:
Instorage_Id CompanyCode CompanyNmae Remark
---------------- ----------- ------------ ---------
AUN20070602001 AUN 康杰有限公司 备注
(所影响的行数为 1 行)