求sql 语句
table A
id name banji
1 aa a1
2 bb a1
3 cc a1
table B
name ject count
aa 语文 80
aa 数学 85
bb 数学 90
cc 语文 80
bb 语文 82
cc 数学 93
Tabel C
name count mingci
aa 165 3
bb 172 2
cc 173 1
根据以上三个表。
我只要任意输入一个学生的name 或id
就能得到三个表中的信息
如我输入name aa
得到
id name count mingci
1 aa 165 3
或者我输入 id = 2
得到
id name count mingci
2 bb 170 2
请问用存储过程怎么样来实现哦?????
------解决方案--------------------你可以创建如下的函数:
create function udf_StudentScoreName
(@name varchar(50))
RETURNS TABLE
RETURN (
SELECT a.id,a.name,b.count,c.mingci
FROM tableA a inner join tableB b on a.name = b.name
inner join tableC c on a.name = c.name
where a.name = @name
)
然后,执行:select * from udf_StudentScore( 'aa ')
或者
create function udf_StudentScoreID
(@id int)
RETURNS TABLE
RETURN (
SELECT a.id,a.name,b.count,c.mingci
FROM tableA a inner join tableB b on a.name = b.name
inner join tableC c on a.name = c.name
where a.id = @id
)
然后,执行:select * from udf_StudentScore(2)
------解决方案--------------------create proc spser
@para nvarchar(100)
as
if (isnumeric(@para))=1 --判断参数是否为数字型数据,是返回1
select A.id,A.name,C.count,C.mingci from A inner join C
on A.name=C.name where A.id= @para
else
select A.id,A.name,C.count,C.mingci from A inner join C
on A.name=C.name where A.name= @para