多表查询(笛卡尔集)

多表查询(笛卡尔集),第1张

例如:

-- 显示雇员名、工资及所在部门的名字

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显示想要字段。

笛卡尔积又叫笛卡尔乘积,是一个叫笛卡尔的人提出来的。

简单的说就是两个集合相乘的结果。

具体的定义去看看有关代数系的书的定义。

直观的说就是

集合A{a1,a2,a3}

集合B{b1,b2}

他们的

笛卡尔积

A*B

={(a1,b1),(a1,b2),(a2,b1),(a2,b2),(a3,b1),(a3,b2)}

任意两个元素结合在一起

笛卡尔乘积是指在数学中,两个集合X和Y的笛卡尓积(Cartesian product),又称直积,表示为X×Y,第一个对象是X的成员而第二个对象是Y的所有可能有序对的其中一个成员  。

假设集合A={a, b},集合B={0, 1, 2},则两个集合的笛卡尔积为{(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)}。

类似的例子有,如果A表示某学校学生的集合,B表示该学校所有课程的集合,则A与B的笛卡尔积表示所有可能的选课情况。A表示所有声母的集合,B表示所有韵母的集合,那么A和B的笛卡尔积就为所有可能的汉字全拼。

设A,B为集合,用A中元素为第一元素,B中元素为第二元素构成有序对,所有这样的有序对组成的集合叫做A与B的笛卡尔积,记作AxB.

笛卡尔积的符号化为:

A×B={(x,y)|x∈A∧y∈B}

例如,A={a,b}, B={0,1,2},则

A×B={(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)}

B×A={(0, a), (0, b), (1, a), (1, b), (2, a), (2, b)}

扩展资料

给出三个域:

D1=SUPERVISOR = { 张清玫,刘逸 }

D2=SPECIALITY= {计算机专业,信息专业}

D3=POSTGRADUATE = {李勇,刘晨,王敏}

则D1,D2,D3的笛卡尔积为D:

D=D1×D2×D3 ={(张清玫, 计算机专业, 李勇), (张清玫, 计算机专业, 刘晨),

(张清玫, 计算机专业, 王敏), (张清玫, 信息专业, 李勇),

(张清玫, 信息专业, 刘晨), (张清玫, 信息专业, 王敏),

(刘逸, 计算机专业, 李勇), (刘逸, 计算机专业, 刘晨),

(刘逸, 计算机专业, 王敏), (刘逸, 信息专业, 李勇),

(刘逸, 信息专业, 刘晨), (刘逸, 信息专业, 王敏)}

这样就把D1,D2,D3这三个集合中的每个元素加以对应组合,形成庞大的集合群。

本个例子中的D中就会有2X2X3个元素,如果一个集合有1000个元素,有这样3个集合,他们的笛卡尔积所组成的新集合会达到十亿个元素。假若某个集合是无限集,那么新的集合就将是有无限个元素

参考资料笛卡尔乘积_百度百科 


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/23667.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-02-16
下一篇2023-02-16

发表评论

登录后才能评论

评论列表(0条)

    保存