19 Oracle資料庫SQL開發之 笛卡爾積
19.Oracle資料庫SQL開發之 笛卡爾積
如果在多表查詢中不指定連線條件,就會導致將一個表中的所有行都連線到另外一個表中的所有行上。稱為笛卡爾積。如果第一個表包含50行,第二個表包含100行,那麼將返回5000行。
例如:
SQL>select pt.product_type_id,p.product_id from product_types pt,products p;
PRODUCT_TYPE_IDPRODUCT_ID
--------------- ----------
1 1
1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
1 11
PRODUCT_TYPE_IDPRODUCT_ID
--------------- ----------
1 12
2 1
2 2
2 3
2 4
2 5
2 6
2 7
2 8
2 9
2 10
PRODUCT_TYPE_IDPRODUCT_ID
--------------- ----------
2 11
2 12
3 1
3 2
3 3
3 4
3 5
3 6
3 7
3 8
3 9
PRODUCT_TYPE_IDPRODUCT_ID
--------------- ----------
3 10
3 11
3 12
4 1
4 2
4 3
4 4
4 5
4 6
4 7
4 8
PRODUCT_TYPE_IDPRODUCT_ID
--------------- ----------
4 9
4 10
4 11
4 12
5 1
5 2
5 3
5 4
5 5
5 6
5 7
PRODUCT_TYPE_IDPRODUCT_ID
--------------- ----------
5 8
5 9
5 10
5 11
5 12
60 rows selected.
SQL>select count(*) from products;
COUNT(*)
----------
12
SQL>select count(*) from product_types;
COUNT(*)
----------
5
12X5=60,共60行。