首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

求一条SQL语句,望各位仁兄帮忙!解决方案

2012-01-16 
求一条SQL语句,望各位仁兄帮忙!求一条SQL语句,望各位仁兄帮忙!入库主表信息Instorage_IdCompanyCodeCompan

求一条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 行)

热点排行