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