tb_yx:
---yxID---------yxmc---------
1 经管学院
2 信息学院
3 建工学院tb_zy:
---zyID--------zymc-------yxID-------
1 会计 1
2 信息工程 2tb_xm:
---xmID--------xmmc------
1 aaa
2 bbb
3 ccctb_fw:
---id------xmID-------yxID----------zyID---------
1 1 1 null
2 1 null 2
3 2 2 null
4 2 3 null
5 2 null 1
6 3 null 1
7 3 null 2希望得到的效果:
------xmID-------xmmc--------------fw--------
1 aaa 经管学院学生,信息学院信息工程专业学生
2 bbb 信息学院学生,建工学院学生,经管学院会计专业学生
3 ccc 信息学院信息工程专业学生 , 经管学院会计专业学生
求解~~~有问题尽管问只为有最好的解答~~~~
---yxID---------yxmc---------
1 经管学院
2 信息学院
3 建工学院tb_zy:
---zyID--------zymc-------yxID-------
1 会计 1
2 信息工程 2tb_xm:
---xmID--------xmmc------
1 aaa
2 bbb
3 ccctb_fw:
---id------xmID-------yxID----------zyID---------
1 1 1 null
2 1 null 2
3 2 2 null
4 2 3 null
5 2 null 1
6 3 null 1
7 3 null 2希望得到的效果:
------xmID-------xmmc--------------fw--------
1 aaa 经管学院学生,信息学院信息工程专业学生
2 bbb 信息学院学生,建工学院学生,经管学院会计专业学生
3 ccc 信息学院信息工程专业学生 , 经管学院会计专业学生
求解~~~有问题尽管问只为有最好的解答~~~~
---yxID---------yxmc---------
1 经管学院
2 信息学院
3 建工学院
你将这个表的YXMC加一个学生不就好了吗
drop function f_str
go
create function dbo.f_str(@XMzdbh int) returns varchar(100)
as
begin
declare @str varchar(1000)
select @str = isnull(@str + ',','') + isnull(fenlei1,fenlei2) from [tb_fanwei] where [XMzdbh] = @XMzdbh
return @str
end
go
select *,fenlei=dbo.f_str(xmzdbh) from TB_XIANGMU 这是之前的我要加上学生,如果是专业就加专业学生
if object_id('f_str') is not null
drop function f_str
go
create function dbo.f_str(@XMzdbh int) returns varchar(100)
as
begin
declare @str varchar(1000)
select
@str = isnull(@str + ',','')
+ case when fenlei1 is null then fenlei2+'学生'
else fenlei1+'专业学生'
end
from [tb_fanwei]
where [XMzdbh] = @XMzdbh
return @str
end
go
树哥的结果应该是。。
-----xmID-------xmmc--------------fw--------
1 aaa 经管学院学生,信息工程专业学生
2 bbb 信息学院学生,建工学院学生,会计专业学生
3 ccc 信息工程专业学生 , 会计专业学生 但是我要的结果是:
-----xmID-------xmmc--------------fw--------
1 aaa 经管学院学生,信息学院信息工程专业学生
2 bbb 信息学院学生,建工学院学生,经管学院会计专业学生
3 ccc 信息学院信息工程专业学生 , 经管学院会计专业学生
专业前面要加上其所在的学院有办法吗???
tb_zy:
---zyID--------zymc-------yxID-------
1 会计 1
2 信息工程 2 那你在函数里应该把这个表的字段加进去
drop function f_str
go
create function dbo.f_str(@XMzdbh int) returns varchar(100)
as
begin
declare @str varchar(1000)
select
@str = isnull(@str + ',','')
+ case when fenlei1 is null then fenlei2+'学生'
else [xx]+fenlei1+'专业学生'
end
from [tb_fanwei]
where [XMzdbh] = @XMzdbh
return @str
end
go 我想在【xx】处加入学院名称,但是我不知道在这里怎样根据tb_zy中的yxID获得院系名称
/*---------------------------------
-- Author : htl258(Tony)
-- Date : 2009-09-17 19:50:57
-- Version: Microsoft SQL Server 2008 (SP1) - 10.0.2531.0 (Intel X86)
Mar 29 2009 10:27:29
Copyright (c) 1988-2008 Microsoft Corporation
Enterprise Evaluation Edition on Windows NT 5.1 <X86> (Build 2600: Service Pack 2)---------------------------------*/
--> 生成测试数据表:tb_yxIF NOT OBJECT_ID('[tb_yx]') IS NULL
DROP TABLE [tb_yx]
GO
CREATE TABLE [tb_yx]([yxID] INT,[yxmc] NVARCHAR(10))
INSERT [tb_yx]
SELECT 1,N'经管学院' UNION ALL
SELECT 2,N'信息学院' UNION ALL
SELECT 3,N'建工学院'
GO
--SELECT * FROM [tb_yx]--> 生成测试数据表:tb_zyIF NOT OBJECT_ID('[tb_zy]') IS NULL
DROP TABLE [tb_zy]
GO
CREATE TABLE [tb_zy]([zyID] INT,[zymc] NVARCHAR(10),[yxID] INT)
INSERT [tb_zy]
SELECT 1,N'会计',1 UNION ALL
SELECT 2,N'信息工程',2
GO
--SELECT * FROM [tb_zy]--> 生成测试数据表:tb_xmIF NOT OBJECT_ID('[tb_xm]') IS NULL
DROP TABLE [tb_xm]
GO
CREATE TABLE [tb_xm]([xmID] INT,[xmmc] NVARCHAR(10))
INSERT [tb_xm]
SELECT 1,'aaa' UNION ALL
SELECT 2,'bbb' UNION ALL
SELECT 3,'ccc'
GO
--SELECT * FROM [tb_xm]--> 生成测试数据表:tb_fwIF NOT OBJECT_ID('[tb_fw]') IS NULL
DROP TABLE [tb_fw]
GO
CREATE TABLE [tb_fw]([id] INT,[xmID] INT,[yxID] INT,[zyID] INT)
INSERT [tb_fw]
SELECT 1,1,1,NULL UNION ALL
SELECT 2,1,NULL,2 UNION ALL
SELECT 3,2,2,NULL UNION ALL
SELECT 4,2,3,NULL UNION ALL
SELECT 5,2,NULL,1 UNION ALL
SELECT 6,3,NULL,1 UNION ALL
SELECT 7,3,NULL,2
GO
--SELECT * FROM [tb_fw]-->SQL查询如下:
if object_id('f_str') is not null
drop function f_str
go
create function dbo.f_str(@XMzdbh int)
returns varchar(100)
as
begin
declare @str varchar(1000)
select @str = isnull(@str + ',','') + isnull(b.[yxmc]+'学生',c.[zymc])
from [tb_fw] a
LEFT JOIN [tb_yx] b
ON a.yxID=b.yxID
LEFT JOIN (
SELECT a.zyID,b.yxmc+a.zymc+'专业学生' AS zymc
FROM [tb_zy] a
LEFT JOIN [tb_yx] b
ON a.yxID=b.yxID
) AS c
ON a.[zyID]=c.[zyID]
where a.[xmID] = @XMzdbh
return @str
end
go
select *,fenlei=dbo.f_str([xmID]) from [tb_xm]
/*
xmID xmmc fenlei
----------- ---------- ----------------------------------------------------------------------------------------------------
1 aaa 经管学院学生,信息学院信息工程专业学生
2 bbb 信息学院学生,建工学院学生,经管学院会计专业学生
3 ccc 经管学院会计专业学生,信息学院信息工程专业学生(3 行受影响)*/