select a.栏目名称,b.员工姓名
from menu as a, employee as b
where a.负责人=b.ID
from menu as a, employee as b
where a.负责人=b.ID
解决方案 »
- x^n=y,xy已知,怎么求解n
- 系统自动获取当前时间 相关问题
- winfrom窗体程序怎么保证当前只有一个程序在执行(打包后点击exe执行时,如果该程序已执行则不再运行新窗体)?
- 高手请进,关于EventType clr20r3。。。。。。
- imagebutton没有enable属性吗?除了写程序让它失效,能否让它看得见,但点了没有效。
- C#中的自定义事件如何处发的?
- 请教如何设置页面过期?
- 有关datagridview里的progressbar列的问题,这么设置没用呢
- 怎样用C#把窗口菜单和按钮做成象VS.NET中的平面菜单和工具栏上的平面按钮?
- 在c#中,如何是一个窗口位于其他所有程序的窗口之上
- 安装 window服务 问题.安装失败!up有分。
- 终于混到了一颗星,散180分给大家,也为加班以来烦恼中高兴一把:)
不过说实话,
chnama() 说的没错!
你可以在sql中写个自定义函数来分析你的负责人,
然后再用一句sql语句通过调用函数来列出数据。
1、首先创建一个sql函数:
--函數,在查询分析器中运行下面代码
create function dbo.getname(@a varchar(200))
returns varchar(200)
as
begin
declare @name varchar(200),@m1 integer,@m2 integer,@m3 integer,@id1 varchar(10),@id2 varchar(10),@id3 varchar(10),@name1 varchar(50),@name2 varchar(50),@name3 varchar(50)
set @m1=CHARINDEX(',',@a,1)--得到第一个,的位置
set @m2=CHARINDEX(',',@a,@m1+1)--得到第二个,的位置
set @id1=substring(@a,1,@m1-1)--负责人中的第一个id
set @id2=substring(@a,@m1+1,@m2-@m1-1)--负责人中的第二个id
set @id3=substring(@a,@m2+1,len(@a)-@m2)--负责人中的第三个id
select @name1=[员工姓名] from employee where id=@id1
select @name2=[员工姓名] from employee where id=@id2
select @name3=[员工姓名] from employee where id=@id3
set @name=@name1+','+@name2+','+@name3
return (@name)
end2、然后一条sql语句解决
select [栏目名称],dbo.getname([负责人]) from menu 已经调试过了,楼主,给分啊!
create table menu(欄目名稱 varchar(30),負責人 varchar(100))
insert into menu values('技術特區','33,22,23')create table employee(ID int,員工姓名 varchar(10))
Insert into employee
select 22,'張三'
union all select 23,'李四'
union all select 33,'王五'select * from menu
select * from employee--函數
create function dbo.fn_n(@vchstring varchar(1000))
returns varchar(1000)
as
begin
declare @intstart int,@intlocation int
declare @s varchar(1000),@vchsubstring varchar(100) if right(@vchstring,1)<>',' set @vchstring=@vchstring+',' select @intstart =1,@s=''
select @intlocation = charindex(',',@vchstring,@intstart)
while (@intlocation <>0 )
begin
select @vchsubstring=substring(@vchstring,@intstart,@intlocation-@intstart)
select @s=@s+員工姓名+',' from employee where ID=@vchsubstring
select @intstart = @intlocation +1
select @intlocation = charindex(',',@vchstring,@intstart)
end
return(left(@s,len(@s)-1))
end--刪除
drop table menu
drop table employee
drop function dbo.fn_n
--結果
select 欄目名稱,負責人= dbo.fn_n(負責人) from menu 欄目名稱 負責人
---------------------------------------------
技術特區 王五,張三,李四