笛卡爾積與連線查詢

2021-07-03 09:39:25 字數 2701 閱讀 8039

連線查詢 (左連線 右連線 內連線)

笛卡爾乘積

集合特性

: 確定性 無序性 唯一性

一張表可以看做是乙個集合,每行資料相當於集合的乙個元素

union

時 去掉重複

原理 就是集合元素的唯一性

表中存在完全相同的兩行 是因為

表內部存在 rowid

進行區分

笛卡爾積

如果 a∈a, b∈b

a*b = ( a, b);

例如a=(1,2,3,4,5);

b=(11,12);

那麼a*b

(1,11), (2,11), (3,11), (4,11), (5,11),

(1,12), (2,12), (3,12), (4,12), (5,12);

a有 m 個元素 b 有n 個元素

那麼 a*b 有 m*n個元素

同理表a有 m 行 表b 有n 行

那麼 a*b 有 m*n行

例如:ta tb兩表

笛卡爾積

通過分析可以看出

tb表的 a

b cd

每個分別和 ta

的a b c d 

組合一遍

左連線

1連上表

2

連線條件

例如:

select

good_id,goods.cat_id,goods_name,shop_price

from

goods left join category

on good.cat_id = category.cat_id;

欄位名重複那麼需要加表字首,否則會報錯;

error 1052(23000) column * in field list is ambiguous

最後兩行可以看 作是一張表。

左連線語法:

select列1,列2,列n

from

table 1left jointable 2

ontable 1

列 = table 2 列;

on後面的條件只要是條件就可以 可以不是等於 但是常用是等於。將from 後面的當做乙個普通表看待。

右連線語法:

select列1,列2,列n

from

table 1right jointable 2

ontable 1

列 = table 2 列;

內連線 inner

select列1,列2,列n

from

table 1inner jointable 2

ontable 1

列 = table 2 列;

左連線  右連線 內連線的區別和聯絡:

左連線和右連線
是以左邊的表為基準。通俗的講,先將左邊的表全部顯示出來,然後右邊的表id與左邊表id相同的記錄就「拼接」上去,比如說id為1的記錄。如果沒有匹配的id,比如說t1中id為2的t2中就沒有。那邊就以null顯示。

右外連線過程正好相反。

內連線

只有一條記錄。內連線就是只取出符合過濾條件的記錄 也就是t1.id=t2.id  那麼符合t1.id=t2.id的記錄只有id=1這一條,所以只顯示一條。 不像外連線,是將你作為基準的表(左外連線就是左邊表為基準,右外連線就是右邊表為基準)的所有行都顯示出來。
-----------------[以下為網上的一點資料(貼上的)]------------------

left join操作用於在任何的 from 子句中,組合**表的記錄。使用 left join 運算來建立乙個左邊外部聯接。左邊外部聯接將包含了從第乙個(左邊)開始的兩個表中的全部記錄,即使在第二個(右邊)表中並沒有相符值的記錄。

語法:from table1 left join table2 on table1.field1 compopr table2.field2

說明:① table1, table2引數用於指定要將記錄組合的表的名稱。 

② field1, field2引數指定被聯接的字段的名稱。且這些字段必須有相同的資料型別及包含相同型別的資料,但它們不需要有相同的名稱。 

③ compopr引數指定關係比較運算子:"=", "", "<=", ">=" 或 "<>"。 

④ 如果在inner join操作中要聯接包含memo 資料型別或 ole object 資料型別資料的字段,將會發生錯誤



Oracle笛卡爾積與連線查詢

一 外連線 左外連線 左表字段的全部記錄顯示,右表顯示條件限定的字段記錄,非條件限定的顯示null。可以加where限定 select from dept d1 left join emp d2 on d1.deptno d2.deptno select from dept d1 left join...

避免笛卡爾積

在mysql中建立臨時表 create table temptable 2 instanceid numeric 30 celltype varchar 128 enodeb id numeric 30 eutrancell id numeric 30 engine myisam default c...

js笛卡爾積

可以用來模擬路徑,或者標籤的順序。笛卡兒積組合 function descartes list var result var pindex null var tempcount 0 var temp 根據引數列生成指標物件 for var index in list pindex index 單維度...