简单sql 语句问题, 在线等待, 100分相谢****************
帮朋友问问题.
table_room_info 保存聊天室的基本信息. 1 对1关系 每个聊天室一个记录
table_room_menber 保存聊天室会员 1对多关系 每个聊天室多个会员
table_room_forbid 保存聊天室黑名单. 1对多关系.每个聊天室多个黑名单.
现,给定聊天室ID, 一次奖 聊天室基本信息, 会员, 黑名单全部返回, 但希望聊天室信息不要冗余返回.
怎么写这个sql语句?
谢谢.
问题点数:0、回复次数:6Top
1 楼orcale()回复于 2005-06-04 15:09:34 得分 0
select * from table_room_info a inner join table_romm_menber b on a.room_id=b.room_id
inner join table_room_forbid c on a.room_id=c.room_id where room_id=@room_idTop
2 楼florist2000(我爱susan)回复于 2005-06-04 15:20:11 得分 0
谢谢你, 这个我大概知道, 请问
这个返回回不会造成聊天室信息重复返回呢?
因为table_room_info非常大, 所以, 不能然他返回多次.
Top
3 楼libin_ftsafe(子陌红尘:TS for Banking Card)回复于 2005-06-04 15:39:13 得分 0
create function f_str(@room_id int)
returns varchar(8000)
as
begin
declare @forbid varchar(8000)
set @forbid = ''
select @forbid = @forbid + ',' + rtrim(forbid) from table_room_forbid where room_id = @room_id
select @forbid = case when len(@forbid)>0 then stuff(@forbid,1,1,'') else '')
return @forbid
end
select
*,
forbid = dbo.f_str(a.room_id)
from
table_room_info a
inner join
table_romm_menber b
on
a.room_id=b.room_id
where
room_id=@room_idTop
4 楼florist2000(我爱susan)回复于 2005-06-04 15:44:13 得分 0
谢谢上面这位高手,
他用的数据库室MYSQL, 不知道能否支持你写的函数.
能否不用函数, 把他写出来呢?Top
5 楼libin_ftsafe(子陌红尘:TS for Banking Card)回复于 2005-06-04 17:14:00 得分 0
MYSQL没用过,如果不支持函数的话,最好在程序中处理结果集中重复的字段。Top
6 楼florist2000(我爱susan)回复于 2005-06-05 08:57:50 得分 0
能说详细点嘛?谢谢Top




