多表查询(笛卡尔集)
2019-03-21 本文已影响0人
一片冰心一生平安
- 多表查询
基于两个和两个以上的表或视图的查询。
例如:
-- 显示雇员名、工资及所在部门的名字
select t.ename, t.sal, d.dname
from emp t, dept d
where t.deptno = d.deptno;
多表查询实际就是笛卡尔集
笛卡尔乘积:
假设集合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叫作一个分量。