首页 新闻 会员 周边 捐助

数据库中一个字段存了两个部分的id,以逗号分割,在查询时候怎么能显示部门的名称,比如'12,13'查

0
[已关闭问题]

数据库中一个字段存了两个部分的id,以逗号分割,在查询时候怎么能显示部门的名称,比如'12,13'查询出来为'科室1,科室2'

田志鹏的主页 田志鹏 | 初学一级 | 园豆:185
提问于:2008-11-12 17:43
< >
分享
其他回答(7)
0

我建议用先查询出来如'12,13'然后将他们分割成数组或者集合

然后在通过集合中的数据再查询科室

小手冰冰凉 | 园豆:20 (初学一级) | 2008-11-12 17:54
0

查询的时候可以使用 in 操作.

侯垒 | 园豆:3435 (老鸟四级) | 2008-11-12 17:58
0

侯垒  方法可行

5yplan | 园豆:1330 (小虾三级) | 2008-11-12 19:32
0

建议在程序里作处理,先读取出 '12,13' ,然后使用 select name from tb where id in(12,13) 来获取科室信息,不过这个科室信息获取之后是一条条的记录,你需要再将科室名字连接起来才能得到你想要的结果

如果要在数据库中做处理,试试下面的存储过程:

create procedure forQ3773
 @aid int
as
begin
   --下面四行用于根据aid获取idlist并放到表变量@tb中
   declare @idlist varchar(2000)
   declare @tb table(bname varchar(2000))
   select @idlist = idlist from a where aid = @aid
   insert into @tb exec('select bname from b where bid in(' + @idlist + ')')

   --下面三行用于连接得到的列表,如果不需要连接就不用了
   declare @s varchar(2000)
   set @s = ''
   select @s = @s + cast(bname as varchar) + ',' from @tb

   --上面拼字符串时最后多一个逗号,这里去掉并作为结果返回
   select left(@s,len(@s)-1)
end
=============================

里面用到了两个表:a(aid,idlist) 和 b(bid,bname),a.idlist是存放你那个'12,13'的,b.bid是对应的id,b.bname是对应的科室名字,测试数据如下:

insert into a(aid,idlist) values(1,'1,2')
insert into a(aid,idlist) values(2,'2,3')
insert into a(aid,idlist) values(3,'1,2,3')

insert into b(bid,bname) values(1,'科室1')
insert into b(bid,bname) values(2,'科室2')
insert into b(bid,bname) values(3,'科室3')

测试结果:

execute forQ3773 @aid=1    --科室1,科室2
execute forQ3773 @aid=2    --科室2,科室3
execute forQ3773 @aid=3    --科室1,科室2,科室3

丁学 | 园豆:18730 (专家六级) | 2008-11-13 08:20
0

还是在程序里面处理比较好吧

张荣华 | 园豆:2020 (老鸟四级) | 2008-11-13 09:40
0

数据库尽量不要这样设计。数据库表的每一列都应该是“原子”的。

Anders Liu | 园豆:230 (菜鸟二级) | 2008-11-13 10:05
0

以前就碰到过一个这样的问题,看到丁学的好象是另一种思路,去试试

有所为,有所不为 | 园豆:1200 (小虾三级) | 2008-11-13 10:17
0

你查询科室的名字,SQL的Where条件用In(也就是你用逗号隔开的ID) 就可以了,

金鱼 | 园豆:1090 (小虾三级) | 2008-11-14 16:44
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册