1. 程式人生 > >19 Oracle資料庫SQL開發之 笛卡爾積

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行。