谁能举例详细解释一下 左、右外连接查询、完整外连接查询、 交叉连接 查询??

解决方案 »

  1.   

    内联接
    INNER JOIN 返回两个表中能关联上的或不能关联上的所有行
    外连接 
    LEFT JOIN / LEFT OUTER JOIN 左边表的所有行和右边表的关联行
    RIGHT JOIN / RIGHT OUTER JOIN 右边表的所有行和左边表的关联行
    FULL JOIN / FULL OUTER JOIN 两个表的所有行
    交叉联接 返回表1的行数*表2的行数
      

  2.   

    补充一下:交叉联接(cross join)也称笛卡儿乘积,看书上说是一个叫笛卡儿发明的
    返回的结果是左表中的所有行,左表中的每一行与右表中的所有行组合(相乘一样)如表1有5行,表2有9行,则5*9=45 返回结果是45行
      

  3.   

    突然觉得下午我是不是太尖刻了,我还是来回答一下楼主,下午的发言,不好意思呀。
    假设有两张表,表A:ID  表B:ID
                     a       a       
                     b       c
    以等值条件为例,如果用集合的概念来说,
    内连接类似于A交B,返回结果:
    a a外连接中:
    左连接:相当于A,当然也包含B交A的部分,返回结果:
    a  a
    b  null右连接:与左连接相似,只是方向相反,相当B,并包含A交B的部分,返回结果:
    a     a 
    null  c完全连接,相当于A并B或A+B,返回结果:
    a    a
    b    null
    null c交叉连接,完全是两个表的内容的全排列,也就是楼上所说的笛卡儿积,返回结果:
    a   a
    a   c
    b   a
    b   c
      

  4.   

    10.内连接--自然连接
    必须包含Join和On
    select a0101,a01910 from a01 join deptcode on a01.dept_id=deptcode.dept_id11.外连接
    参与连接的表有主从之分:以主表中每行数据匹配从表的每行数据,如果主表的行再从表中找到匹配的行,则直接返回结果再查询中;如果主表中的行没有在从表中找到匹配的行,主表的行仍然保留,并返回导查询结果中,相应从表中的行中被填Null后返回导查询结果中。连接类型              关键字                                    主表位置
    左外连接        Left outer join                               再关键字的左边
    右外连接        Right outer join                             在关键字右边
    完全连接        Full outer join                               在关键字的两边
    联合查询
    select a0190,a0101,a0107 from a01
    union
    select a0190,a0101,a0107 from a10
    列标题为第一个查询的列标题
    union自动删除重复行,需要保留,就使用union all
    交叉连接
    select a0190,a0101 from a01 cross join deptcode where a01.dept_id=deptcode.dept_id
    生成交叉2个表所有可能的组合。
    不带where,返回2表的笛卡尔积
    带where ,返回2表笛卡尔积减where 限定的记录
    自连接
    select a.名称,a。商人编号,b.名称1
    from 产品信息 as a inner join 产品信息 as b
    on a.商人编号=b.商人编号。