首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 什么是外连接? [已结贴,结贴人:konwdotnet]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2007-11-27 16:07:37 楼主
    where a = b(+)
    是什么意思,那位高手给我通俗的讲一下。谢谢。
    10  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2007-11-27 16:28:541楼 得分:0
    类似于right join / left join

    显示b表的全部
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2007-11-27 17:13:332楼 得分:0
    返回行是
    a = b 的行
    +
    左表的a 在右表没有匹配的 b值的行(右表的列填null)

    就是返回a表的所有行
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2007-11-27 17:43:043楼 得分:0
    高手:QQ group:10885799
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2007-11-28 12:23:014楼 得分:5
    不知道你是不很熟悉Full join的概念 还是Oracle里全联接的syntax
    +是oracle里outer join的操作符号
    where a(+)=b 意思为 tablea right join tableb on a=b;
    EG:
    SQL code
    SQL> select test22.addr,test2.* from test2 right join test22 on test2.id=test22.id; ADDR ID NAME -------------------- ---------- -------------------- shanghai 1 shen beijing 2 liang nanjing 3 hello tianjing SQL> select test22.addr,test2.* from test2,test22 where test2.id(+)=test22.id; ADDR ID NAME -------------------- ---------- -------------------- shanghai 1 shen beijing 2 liang nanjing 3 hello tianjing SQL> select * from test22; ID ADDR ---------- -------------------- 1 shanghai 2 beijing 3 nanjing 10 tianjing SQL> select * from test2; ID NAME ---------- -------------------- 1 shen 2 liang 3 hello 4 word 5 java 6 delphi 7 c# 8 Grails 已选择8行。

    建议先看看Oracle里的帮助文档 Oracle官方网站 有的~~
    对于(+)可能直接用 full join 、right join、left join、inner join更好理解些
    当然你研究着用,自然没问题的~~
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2007-11-28 17:31:405楼 得分:5
    理解oracle中的外连接
        术语定义 
        保留行表: 外连接条件中不包含+号的表
        注意:不包含+号的表是指在外连接条件中。 如下例所示:
            where  d.deptno(+)=10              无保留行表
            where  d.deptno(+)=70              无保留行表
            where  d.deptno=e.deptno(+)        d 是保留行表表
            where  d.deptno(+)=e.deptno        e 是保留行表表
            where  d.deptno=10                不考虑,普通的连接条件
            where  d.deptno(+)=e.deptno and e.deptno(+)=10 无保留行表  d和e均包含了+号
             
            左外连接中左边的表。
            右外连接中右边的表。
            全外连接中全部的表。

        替换 NULL 的表:
            左外连接中右边的表
            右外连接中左边的表
            全外连接中全部的表

          在全外连接中,两张表既可以保留行,也可以替换 NULL。

        当不存在匹配的行时,替换 NULL 的表替换 NULL。如果连接操作中不存在匹配,任何在 SELECT 列中引用的替换 NULL 表的列都将替换为NULL。

    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved