首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

求sql 语句解决思路

2011-12-29 
求sql 语句tableAidnamebanji1aaa12bba13cca1tableBnamejectcountaa语文80aa数学85bb数学90cc语文80bb语文

求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

热点排行