精華區beta Database 關於我們 聯絡資訊
※ 引述《frank99977 (嘻)》之銘言: : 現在如果有兩個table t1跟t2 : 假設t1裡有name,t2裡有phone : 而且也有PK跟FK : select t1.name, t2.phone : from t1,t2 : where .... : 跟 : select t1.name,t2.phone : from t1 inner join t2 : on .... : where ..... : 請問一下 : 這兩個出來結果會一樣嗎? 一樣,where 就是 inner join outer join才會有些微的差別,借用此例 select t1.name,t2.phone from t1 left join t2 on .... where ..... 此時以左邊的 t1為主,若 t1有name,t2沒phone,會select出 name phone -- john null 另外,from 2個 table以上會做卡氏積,一般資料庫課程都會提到, 剛開始也許無法體會這所代表的意義,練習使用 self join解問題可能會有所體會... 在本版有看過一個很有印象的例子....忘了哪篇 囧> 問題大概是這樣,一個儲存結構如下: 班級 姓名 成績 A XXX 90 A YYY 85 A ZZZ 88 A VVV 70 B HHH 74 B MMM 88 B KKK 72 B NNN 79 ... ... 找出每班的前三名。答案應該還在版上 囧a.. 可能還會覺得奇怪,為什麼有 where還要有 inner join? 我以為是因為....跟卡氏積有關係,on剔除重複的「錯誤」資料 where 用來從「正確」資料找出你想要的; 這樣可以保持SQL 語法的彈性 SELECT * FROM TABLE1 JOIN TABLE2 ON.... WHERE .... TABLE1 跟 TABLE2 JOIN 起來會有很多欄位, 只要在第一句把 *換掉就可以輕鬆換撈別的欄位 只要在 WHERE子句改變條件就可以撈出其它的「正確」資料 在 FROM子句(我是把JOIN當成FROM下的東西,忘了這觀念對不對…用的很開心就是XD) 裡加入(JOIN)別的 TABLE也是一、兩行就搞定的事 有這習慣在改前端應用程式或是後端資料庫裡的 SQL會愉快不少 感覺不管什麼程式語言都很注重彈性,必需要方便更改才會流行、易用。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.229.212.136