日期:2014-05-18  浏览次数:20494 次

求一sql语句,想了一天没想出来
表结构:
------
表客房
id   客房类型id     客房类型   价格
1       1                       标准房     100
2       1                       豪华         300
3       1                       总统套房   10000
--------------------------------
create   table   宾馆_客房
(客房id   int   not   null,
客房类型   nvarchar(20)   null,
价格   nvarchar(20)   null)
------
表   宾馆
id   客房类型id   效果图     配套设施   服务   简介
1           1                   37           dongxi     fuwu     jianjie
2           2                     2           null           null     null
-----------------------------------------
create   table   宾馆
(id   int   not   null,
客房类型id   int   not   null,
效果图   int   null
配套设施   nvarchar(200)   null,
服务   nvarchar(100)   null,
简介   nvarchar(8000)   null)

结果:
id           客房类型                               价格               效果图     配套设施   服务   简介
1       标准房   豪华   总统套房   100   300   10000           37           ................      

用一个select   语句。



------解决方案--------------------
一条语句解决问题比较困难;
如果有辅助参数还差不多。
------解决方案--------------------
游标可以
------解决方案--------------------
--字符串的合并需要写个函数!

create function roy(@i int)
returns varchar(4000)
as
begin
declare @v varchar(400),@s varchar(400)
set @v= ' '
set @s= ' '
select @v=@v+客房类型+ ', ',@s=@s+rtrim(价格)+ ', ' from 宾馆_客房
where 客房类型id=@i
set @v=left(@v,len(@v)-1)
set @s=left(@s,len(@s)-1)
return @v+ ' ' +@s
end

select dbo.roy(a.客房类型id) from 宾馆_客房 a,宾馆 b
where a.客房类型id=b.客房类型id

------解决方案--------------------
--try
create table 宾馆_客房
(id int not null,
客房类型id int not null,
客房类型 nvarchar(20) null,
价格 nvarchar(20) null)
insert into 宾馆_客房 select 1,1, '标准房 ', '100 '
union all select 2,1, '豪华房间 ', '300 '
union all select 3,1, '总统套房 ', '10000 '
--
create table 宾馆
(id int not null,
客房类型id int not null,
效果图 int null,
配套设施 nvarchar(200) null,
服务 nvarchar(100) null,
简介 nvarchar(4000) null)
insert into 宾馆 select 1, 1 ,37, 'dongxi ', 'fuwu ', 'jianjie '
union all
select 2,2,2, null , null , null

/*
id 客房类型 价格 效果图 配套设施 服务 简介
1 标准房 豪华 总统套房 100 300 10000 37 ................ */
go
create function dbo.f1(@id int,@col int)