美文网首页
多表查询(笛卡尔集)

多表查询(笛卡尔集)

作者: 一片冰心一生平安 | 来源:发表于2019-03-21 15:29 被阅读0次
    • 多表查询
      基于两个和两个以上的表或视图的查询。

    例如:
    -- 显示雇员名、工资及所在部门的名字
    select t.ename, t.sal, d.dname
    from emp t, dept d
    where t.deptno = d.deptno;

    image.png

    多表查询实际就是笛卡尔集

    笛卡尔乘积:
    假设集合A={a, b, c, d},集合B={0, 1, 2},则两个集合的笛卡尔积为:
    {(a, 0), (a, 1), (a, 2),
    (b, 0), (b, 1), (b, 2),
    (c, 0), (c, 1), (c, 2),
    (d, 0), (d, 1), (d, 2)
    }
    可见,上面的笛卡尔集在oracle中是这样表示的:每一个二元组 如(a, 0) 都相当于虚表中的一条记录,共有4 x 3=12行记录,接下来就是从这临时表中根据where条件筛选了,最后select显示想要字段。

    摘自百度百科
    笛卡尔集这词经常出现于数据库多表查询中。给定一组域D1,D2,…,Dn,这些域中可以有相同的域。 D1,D2,…,Dn的笛卡儿积为:
    D1×D2×…×Dn ={(d1,d2,…,dn)|diÎDi,i=1,2,…,n}
    其中每一个元素(d1,d2,…,dn)叫作一个n元组或简称元组。元组(d1,d2,…,dn)中的每一个值di叫作一个分量。

    相关文章

      网友评论

          本文标题:多表查询(笛卡尔集)

          本文链接:https://www.haomeiwen.com/subject/tyzqvqtx.html