select A.name,B.name,C.namefrom A 
JOIN B ON A.ClassID=B.ID
JOIN C ON A.MarkID=C.id

解决方案 »

  1.   

    select  A.ID,A.Name,B.MarkName,C.ClassName
    from A 
    left join B on B.ID=A.MarkID
    left join C on C.ID=A.ClassID
      

  2.   

    select A.name,B.name,C.name
    from A 
    JOIN B ON A.ClassID=B.ID
    JOIN C ON A.MarkID=C.id
      

  3.   

    --如果从结果推测楼主的要求,应该是这样的.--测试--测试数据
    create table a(id int,name varchar(10),classid char(3),id char(3))
    insert a  select 1,'小明','001','001'
    union all select 2,'小明','001','002'
    union all select 3,'小明','001','003'create table b(id char(3),name varchar(10))
    insert b  select '001','语文'
    union all select '002','数学'
    union all select '003','英語'
    go--处理
    declare @s varchar(8000)
    set @s=''
    select @s=@s+',['+name+']=max(case id when '''+id+''' then '''+name+''' else '''' end)'
    from b
    exec('select name'+@s+' from a group by name')
    go--删除测试
    drop table a,b/*--测试结果
    name       语文   数学   英語   
    ---------- ---- ---- ---- 
    小明         语文   数学   英語
    --*/
      

  4.   

    --如果从结果推测楼主的要求,应该是这样的.--测试--测试数据
    create table a(id int,name varchar(10),classid char(3),id char(3))
    insert a  select 1,'小明','001','001'
    union all select 2,'小明','001','002'
    union all select 3,'小明','001','003'create table b(id char(3),name varchar(10))
    insert b  select '001','语文'
    union all select '002','数学'
    union all select '003','英語'create table c(id char(3), ClassName varchar(10))
    insert c select '001','計算機一班'
    go--处理
    declare @s varchar(8000)
    set @s=''
    select @s=@s+',['+name+']=max(case id when '''+id+''' then '''+name+''' else '''' end)'
    from b
    exec('select 姓名=a.name,班级=c.ClassName'+@s+' from a join c on a.classid=c.id
    group by a.name,c.ClassName')
    go--删除测试
    drop table a,b,c/*--测试结果姓名         班级         语文   数学   英語   
    ---------- ---------- ---- ---- ---- 
    小明         計算機一班      语文   数学   英語
    --*/
      

  5.   

    zjcxc(: 邹建 :) 厉害 今天从你这里学到了一招