笛卡尔积与交叉联接

WBOY
リリース: 2016-06-07 15:22:09
オリジナル
1917 人が閲覧しました

1 笛卡尔积定义 设A,B为集合,用A中元素为第一元素,B中元素为第二元素构成的有序对,所有这样的有序对组成的集合叫做A与B的笛卡尔积,记作AxB。 例如,A={a,b},B={0,1,2},则 AxB={a,o,a,1,a,2,b,0,b,1,b,2,} BxA={0,a,0,b,1,a,1,b,2,a,2,b} 2 交差联接 交差

1 笛卡尔积定义

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

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

AxB={,,,,,,}

BxA={,,,,,}

2 交差联接

交差联接是笛卡尔积在SQL中的实现,SQL中使用关键字“CROSS JOIN”来表示交差联接。

例如:存在表tb_Class及表tb_Student,两表拥有的数据如下图所示。

\

\

对两表进行交叉连接查询:

喎?http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHByZSBjbGFzcz0="brush:sql;">SELECT * FROM tb_Class a CROSS JOIN tb_Student b SELECT * FROM tb_Student c CROSS JOIN tb_Class d

得到以下查询结果:

\

3 小知识

1) 交叉连接不能使用ON关键字,但可以使用WHERE子句定义连接条件。

SELECT * FROM tb_Class a CROSS JOIN tb_Student b WHERE a.classid=b.classid
ログイン後にコピー
\
此时,与以下查询结果一致。

SELECT * FROM tb_Class a ,tb_Student b WHERE a.classid=b.classid
ログイン後にコピー

所以,如果添加了WHERE子句,则交叉联接的行为将与内部联接行为相似。

2 )交叉连接返回的数据行数为第一个表中符合条件的数据行数乘以第二个表中符合条件的数据行数。

实例中的 tb_Class表有4行数据,tb_Student表有3行数据,所以返回的结果有12行。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート