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请问用存储过程怎么样来实现哦?????

解决方案 »

  1.   

    你可以创建如下的函数:
    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)
      

  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