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 李四
*/