Re: [SQL ] 初學者的join問題...

看板Database作者 (嘻)時間18年前 (2007/06/24 01:27), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/3 (看更多)
那如果照你這樣說,如果不是OUTER JOIN 這樣用JOIN或者直接把欄位挑出來再加WHERE都可以做了喔? 感謝大大回答這麼詳細 ※ 引述《grence (多想兩分鐘 = =")》之銘言: : 標題: Re: [SQL ] 初學者的join問題... : 時間: Sat Jun 23 23:54:02 2007 : : ※ 引述《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 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.120.218.133
文章代碼(AID): #16VLWCAA (Database)
文章代碼(AID): #16VLWCAA (Database)