日期:2014-05-17  浏览次数:20854 次

sql 1个表 2个不同字段 连接一个相同的表,查询要怎么写?
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

------解决方案--------------------
----------------------------
-- 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 李四
*/