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

这样的查询语句该如何写

2012-03-06 
这样的查询语句该怎么写?有以下两个表:1.商品信息表供应商商品名称进货数量 结存1甲天下牛奶1051伊利牛奶2

这样的查询语句该怎么写?
有以下两个表:
1.商品信息表
供应商 商品名称 进货数量 结存
1甲天下牛奶105
1伊利牛奶2010
2苹果 20 10
2香蕉 3015

2.字段表
供应商 字段名称 显示
1商品名称1
1进货数量1
1结存 0
2商品名称0
2进货数量1
2结存 0

现要查出"供应商"为1,而且字段表中的"显示"为1的字段,即得出以下结果:
供应商 商品名称 进货数量 
1甲天下牛奶10
1伊利牛奶20
因为字段表中的"结存"的"显示"字段为0,所以不显示该字段,请问该怎么写SQL语句?

想实现的功能是:根据字段表中“显示”字段为1来查询出商品信息表中的字段 


[解决办法]
select a.供应商,a.商品名称,a.进货数量
from 商品信息表 a
inner join 字段表 b on a.供应商 = b.供应商 and b.显示 = 1
[解决办法]

SQL code
--> 测试数据: 商品信息表create table 商品信息表(供应商 int,商品名称 varchar(10),进货数量 int,结存 int)insert into 商品信息表select 1,'甲天下牛奶',10,5 union allselect 1,'伊利牛奶',20,10 union allselect 2,'苹果',20,10 union allselect 2,'香蕉',30,15--> 测试数据: 字段表create table  字段表(供应商 int,字段名称 varchar(8),显示 int)insert into 字段表select 1,'商品名称',1 union allselect 1,'进货数量',1 union allselect 1,'结存',0 union allselect 2,'商品名称',0 union allselect 2,'进货数量',1 union allselect 2,'结存',0declare @sql varchar(1000)select @sql=isnull(@sql+',','')+字段名称 from 字段表 where 供应商=1 and 显示=1exec('select 供应商,'+@sql+' from 商品信息表 where 供应商=1')
[解决办法]
SQL code
  
/******************************************************************************/
/*回复:20080519103总:00023                          */
/*主题:根据字段表中“显示”字段                        */
/*作者:二等草                                */
/******************************************************************************/

set nocount on

--数据--------------------------------------
create table [商品信息表] ([供应商] int,[商品名称] varchar(10),[进货数量] int,[结存] int)
insert into [商品信息表] select 1,'甲天下牛奶',10,5
insert into [商品信息表] select 1,'伊利牛奶',20,10
insert into [商品信息表] select 2,'苹果',20,10
insert into [商品信息表] select 2,'香蕉',30,15

create table [字段表] ([供应商] int,[字段名称] varchar(8),[显示] int)
insert into [字段表] select 1,'商品名称',1
insert into [字段表] select 1,'进货数量',1
insert into [字段表] select 1,'结存',0
insert into [字段表] select 2,'商品名称',0
insert into [字段表] select 2,'进货数量',1
insert into [字段表] select 2,'结存',0
go
--代码--------------------------------------
declare @s varchar(8000),@gys int
select @gys = 1
select @s = 'select 供应商'
select @s = @s+','+字段名称 from 字段表 where 供应商 = 1 and 显示 = 1
select @s = @s+' from 商品信息表 where 供应商 = '+rtrim(@gys)
exec(@s)
go
/*结果--------------------------------------
供应商    商品名称    进货数量   
----------- ---------- -----------
1      甲天下牛奶    10
1      伊利牛奶    20
--清除------------------------------------*/
drop table 字段表,商品信息表

热点排行