当前位置: 代码迷 >> Sql Server >> 这样的查询语句该如何写
  详细解决方案

这样的查询语句该如何写

热度:42   发布时间:2016-04-27 18:40:12.0
这样的查询语句该怎么写?
有以下两个表:
1.商品信息表
供应商 商品名称 进货数量 结存
1 甲天下牛奶 10 5
1 伊利牛奶 20 10
2 苹果 20 10
2 香蕉 30 15

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 供应商,[email protected]+' 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 字段表,商品信息表
  相关解决方案