線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:982
推到 Plurk!
推到 Facebook!

請教SQL語法

答題得分者是:Justmade
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-06-28 11:58:19 IP:63.84.xxx.xxx 未訂閱
請教各位前輩 小弟剛開始學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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-06-28 13:26:44 IP:218.16.xxx.xxx 未訂閱
在 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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-06-28 14:13:58 IP:63.84.xxx.xxx 未訂閱
謝謝Justmade前輩的指點﹒    小弟明白了﹒﹒﹒ 努力,相信會獲得美麗! 忻晟
------
忻晟
系統時間:2024-11-25 8:35:17
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!