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

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代表在相对表中无记录。
...全文
105 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
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(+)

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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