2012-09-16 117 views
-1

我有一個查詢,我有下面兩個表..關於查詢的輸出

CREATE table "EMPLOYEE" (
    "EMP_ID"  NUMBER, 
    "ENAME"  VARCHAR2(4000), 
    "SALARY"  VARCHAR2(4000), 
    "COMPANY" VARCHAR2(4000), 
    "CONTACTNO." NUMBER, 
    "GENDER"  CHAR(100), 
    constraint "EMPLOYEE_PK" primary key ("EMP_ID") 
) 

CREATE TABLE "DEPARTMENT" 
( 
    "DEPT_ID" NUMBER, 
    "DEPT_NAME" VARCHAR2(4000), 
    "LOCATION" VARCHAR2(4000), 
    "CONTACTNO." NUMBER, 
    CONSTRAINT "DEPARTMENT_PK" PRIMARY KEY ("DEPT_ID") ENABLE 
) 

現在會是怎樣的輸出。如果我寫SELECT * FROM EMPLOYEE,DEPARTMENT

+0

你會得到你的兩個表的笛卡爾積。這意味着,如果員工表中有5000行,部門表中有20行,則查詢中會得到100,000行。 –

+0

@MichaelBuen如果我在這兩個表中有4行,那麼這兩個表中的總行數是多少,它是4 * 4 = 16,還是第一個表的每一行都與第二行的每一行匹配表是64(16 + 16 + 16 + 16)..!請告知 –

+0

這是一個通過實驗回答的非常簡單的問題。 – APC

回答

1

只有一個模式,沒有。如果表格中有數據,則會在每個表格中交叉連接所有內容。

+0

是的,桌子有數據,但兩個故事之間沒有聯繫,兩個桌子都是獨立的,請告訴我仍然是交叉加入..! –

+0

您詢問的查詢返回兩個表的交叉連接,因爲沒有指定連接的條件。這意味着第一個表的每一行都與第二個表的每一行相匹配。這就是「交叉連接」的基本概念。 –

1

逗號操作符返回兩個表的交叉連接。這是參與連接的表的笛卡爾乘積。

+0

是的表有數據,但兩個故事之間沒有聯繫兩個表都是獨立的,請告知我仍然得到交叉連接..! –

+0

如果表是相關的,它仍然是交叉連接。如果你不知道,只需要提醒一下,在Oracle中使用逗號連接語法是真正的老派。現在人們傾向於使用更多的ANSI sql –