sql  1个表 2个不同字段 连接一个相同的表,查询要怎么写?表A
年级     数学老师ID      语文老师ID 
1年级    06             05
2年级    07             05表B
老师ID   老师姓名
06       张三
05       李四查询的结果要求为
年级     数学老师      语文老师
1年级    张三         李四
...查询语句怎么写?按下面这样的写法,根本执行不出来数据
select a.年级,b.老师姓名,b.老师姓名 
from A a,B b  
where a.数学老师ID = b.老师ID  and a.语文老师ID = b.老师ID

解决方案 »

  1.   

    ----------------------------------------------------------------
    -- Author  :DBA_Huangzj(發糞塗牆)
    -- Date    :2013-05-26 22:49:43
    -- Version:
    --      Microsoft SQL Server 2008 R2 (SP1) - 10.50.2500.0 (Intel X86) 
    -- Jun 17 2011 00:57:23 
    -- Copyright (c) Microsoft Corporation
    -- Enterprise Edition on Windows NT 6.1 <X86> (Build 7601: Service Pack 1)
    --
    ----------------------------------------------------------------
    --> 测试数据:[A]
    if object_id('[A]') is not null drop table [A]
    go 
    create table [A]([年级] varchar(5),[数学老师ID] varchar(2),[语文老师ID] varchar(2))
    insert [A]
    select '1年级','06','05' union all
    select '2年级','07','05'
    --------------开始查询--------------------------
    --> 测试数据:[B]
    if object_id('[B]') is not null drop table [B]
    go 
    create table [B]([老师ID] varchar(2),[老师姓名] varchar(4))
    insert [B]
    select '06','张三' union all
    select '05','李四'
    --------------开始查询--------------------------
    select [A].[年级],b.[老师姓名] 数学老师,c.[老师姓名] 语文老师 from [A] left JOIN [B] ON a.[数学老师ID]=b.[老师ID]
    left JOIN [B] c ON a.[语文老师ID]=c.[老师ID]
    ----------------结果----------------------------
    /* 
    年级    数学老师 语文老师
    ----- ---- ----
    1年级   张三   李四
    2年级   NULL 李四
    */