关于多表连接的问题!!!

qx0609 2005-09-07 04:40:58
我有四个表
t1
id name
t2
id value1
t3
id value2
t4
id value3
我想输出id,name,value1,value2,value3
t2,t3,t4的id不重复,但记录数不相同。
想象的输出结果
01 AAA 10 20 30
02 BBB 0 10 0
03 CCC 0 0 0
04 DDD 0 10 15
O代表在相对表中无记录。
...全文
92 3 打赏 收藏 举报
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
seabore 2005-12-27
好像不对喔,楼主想要的是4张表的合集吧,左连接是以主表为最大记录数的吧
  • 打赏
  • 举报
回复
lizhaogui 2005-09-07
我补充一下:

select t1.id,t1.name,nvl(t2.value1,0),nvl(t3.value2,0),nvl(t4.value3,0)
from t1,t2,t3,t4
where t1.id=t2.id(+)
and t1.id=t3.id(+)
and t1.id=t4.id(+);

这里用到了左联接,即左边的表是主表,(+)号放在副表的后面,无加号的代表主表,在查询时主表中的数据记录全部都显示出来的,无论副表中有没有。nvl(t2.value1,0)代表是当t2.value1是空时就用0代替,非空时就用本身值。
  • 打赏
  • 举报
回复
sasacat 2005-09-07
select t1.id,name,nvl(value1,0),nvl(value2,0),nvl(value3,0)
from t1,t2,t3,t4
where t1.id=t2.id(+)
and t1.id=t3.id(+)
and t1.id=t4.id(+)
  • 打赏
  • 举报
回复
相关推荐
发帖
基础和管理
加入

1.7w+

社区成员

Oracle 基础和管理
社区管理员
  • 基础和管理社区
申请成为版主
帖子事件
创建了帖子
2005-09-07 04:40
社区公告
暂无公告