請教SQL語法 |
答題得分者是:Justmade
|
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
請教各位前輩 小弟剛開始學SQL語法﹐請問以下兩個SQL執行的結果為何會不同﹕
1﹒SELECT 訂單.訂單編號, 產品.產品名稱, 客戶.客戶名稱 FROM 訂單, 產品, 客戶 WHERE 數量 BETWEEN 8 AND 10 2﹒SELECT 訂單.訂單編號, 產品.產品名稱, 客戶.客戶名稱 FROM 訂單, 產品, 客戶 WHERE 數量 BETWEEN 8 AND 10 AND 訂單.產品編號=產品.產品編號 AND 訂單.客戶編號=客戶.客戶編號 第2條SQL中多了'AND 訂單.產品編號=產品.產品編號 AND 訂單.客戶編號=客戶.客戶編號' 這樣一段﹐但這一段的目的只是關聯性建立的依据﹐那為何結果會不同呢﹖ 謝謝﹗ 努力,相信會獲得美麗!
忻晟
------
忻晟 |
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
在 LocalSQL (及大多數的 SQL 語法), 若你 select from 超過一個 table 而沒有說明是以甚麼方法來 join 的話,在沒有條件的情況下,是將數個 table 的列數相乘的。
如有兩個 table
Table1 FieldA FieldB 1 A 2 B Table2 FieldA FieldC 1 一 2 二 若果 select Table1.FieldA, FieldB, FieldC from Table1,Table2 給果會是 FieldA FieldB FieldC 1 A 一 1 A 二 2 B 一 2 B 二 若果 select Table1.FieldA, FieldB, FieldC from Table1,Table2 where FieldB = A 給果會是 1 A 一 1 A 二 若果 select Table1.FieldA, FieldB, FieldC from Table1,Table2 where FieldB = A 給果會是 and Table1.FieldA = Table2.FieldA 1 A 一簡單來說,使用Table1.FieldA = Table2.FieldA 將那些不合適的 join (如上面的 Table1.FieldA 是1 Table2.FieldA 卻是 2 那些)除掉。 要知道,你若不說給他聽 訂單.產品編號=產品.產品編號 AND 訂單.客戶編號=客戶.客戶編號 , 他是不會知道的而會把所有不同的配對各 join 一個記錄出來。 |
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |