多表关联的查询语句

guduyidao 2007-12-10 06:05:07
表一: 表二: 表三:
id 姓名 姓名 年龄 姓名 年龄
1 张三 张三 18 张三 19
2 李四 李四 15 李四 15
3 王二 马六 17 赵七 17
4 赵七
5 马六
-------------------------------------------------------------
表四:
结果:
id 姓名 年龄1 年龄2
1 张三 18 19
2 李四 15 15
3 王二 null null
4 赵七 null 17
5 马六 17 null
求一个查询语句原表: 表一,表二,表三
所要结果: 表四。
...全文
56 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
HaiYang2006 2007-12-18
  • 打赏
  • 举报
回复
select t1.id as id,ti.姓名 as 姓名,t2.年龄 as 年龄1,t3.年龄 as 年龄2 from 表1 t1 left join 表2 t2 on t1.姓名 = t2.姓名 left join 表3 t3 on t1.姓名 = t3.姓名
dawugui 2007-12-18
  • 打赏
  • 举报
回复
--以下为在sql server 2000中的写法
create table A(id int, 姓名 varchar(10))
insert into A values(1, '张三')
insert into A values(2, '李四')
insert into A values(3, '王二')
insert into A values(4, '赵七')
insert into A values(5, '马六')
create table B(姓名 varchar(10), 年龄 int)
insert into B values('张三', 18)
insert into B values('李四', 15)
insert into B values('马六', 17)
create table C(姓名 varchar(10), 年龄 int)
insert into C values('张三', 19)
insert into C values('李四', 15)
insert into C values('赵七', 17)
go

select A.* , B.年龄 年龄1 , C.年龄 年龄2
from A left join B on A.姓名 = B.姓名
left join C on A.姓名 = C.姓名

drop table A,B,C

/*
id 姓名 年龄1 年龄2
----------- ---------- ----------- -----------
1 张三 18 19
2 李四 15 15
3 王二 NULL NULL
4 赵七 NULL 17
5 马六 17 NULL

(所影响的行数为 5 行)
*/
mldshlizhi 2007-12-14
  • 打赏
  • 举报
回复
select t1.id id,ti.姓名 姓名,t2.年龄 年龄1,t3.年龄 年龄2
from 表1 t1,表2 t2,表3 t3
where t1.姓名(+)=t2.姓名
t1.姓名(+)=t3.姓名



mldshlizhi 2007-12-13
  • 打赏
  • 举报
回复
下去想想!

2,209

社区成员

发帖
与我相关
我的任务
社区描述
其他数据库开发 其他数据库
社区管理员
  • 其他数据库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧