|
|
| left join
|
範例或相關連結 || 作者: || 時間:2003-09-28 17:26:41 ||最後更新:2004-05-24 15:13:26|| 列印 ||
修改
目的:不管有沒有電話資料全部列出
表A:全部姓名(id,name)
表B:部分有電話的人與電話資料(name,tel)
left join on 可以將兩個表加在一起
語法如下
SELECT 表A.id,表A.name,表B.tel
FROM 表A left join 表B
on 表A.name=表B.name order by id
|
|
|
| ff
|
範例或相關連結 || 作者:Monster || 時間:2005-02-07 14:45
|| 最後更新:2005-02-07 14:45|| 修改||
刪除
假如表A 里的 name , 和表B 里的name 都不是唯一的值呢?
就是说,可能在表A 里面, 就有好多个重复的name, 那将会出现什么情况?
|
| LEFT JOIN 的用處
|
範例或相關連結 || 作者:報馬仔 || 時間:2004-10-12 11:23
|| 最後更新:2004-10-12 11:23|| 修改||
刪除
使用下面這種方法與INNER JOIN 所出來的結果是一樣的
SELECT 表A.id,表A.name,表B.tel
FROM 表A ,表B
where 表A.name=表B.name order by id
LEFT JOIN 是為了不讓A資料表的資料因為B資料表資料缺少而不在結果列表中所使用。
|
| 你的只是一般的join
|
範例或相關連結 || 作者:總理大臣 || 時間:2004-05-24 15:13
|| 最後更新:2004-05-24 15:13|| 修改||
刪除
你的用法也叫join只是其中的一種。
join其實非常的費資源,因為他的用法其實是這樣的。
交叉連結
a1-b1
a1-b2
a1-b3
......
在這裡面join的時候如果你希望如果bx的值為不存在時
Ax也要列出來就不可以用你的用法了,因為Ax沒有比對的對像。
比如你要列成績,那缺考的人就列不出來了。
|
| Left Outer Join
|
範例或相關連結 || 作者:ylam || 時間:2004-05-19 22:05
|| 最後更新:2004-05-19 22:05|| 修改||
刪除
利用Left Outer Join串連兩個資料表。
標準語法:Select * from 資料表1 資料表別名1 Left Outer Join
資料表2 資料表別名2 On 資料表別名1.欄位1=資料表別名2.欄位2
實例語法:Select * from Accounts A Left Outer Join
Fares B On A.Username=B.UserName
語法解說:「資料表1 資料表別名1」表示這要為資料表設定另一個名字方便在語法中使用,也可以不設別名。
不設別名的話即是默認資料表別名是資料表名稱。一般會用A和B。
「On」是指要把下列兩個欄位作連結條件。
這把兩個資料表合併,只要其中一個資料表有該筆資料,即使另一個資料表沒有,也
會作串連。
|
| 問的好,您賺到了
|
範例或相關連結 || 作者:村仔... || 時間:2004-05-01 15:45
|| 最後更新:2004-05-01 15:45|| 修改||
刪除
問的好,您賺到了!(見下文)
看似一樣,但使用時就未必
「表A:全部姓名(id,name)
表B:部分有電話的人與電話資料(name,tel)」
假設表A有100筆,表B僅50筆
當您想要一次列出100筆連帶列出電話的資料時
用您的方式僅能列出50筆,別人就會問您,其他的人那裡去了。
所以您得下兩次的sql語法,而用我的方式卻僅列一次。
這樣子,應理解差別的地方了吧!
當然一般使用上不會是像例子那麼簡單,通常會加入where 子句
SELECT 表A.id,表A.name,表B.tel
FROM 表A left join 表B
on 表A.name=表B.name
where 表A.???='' and 表B.???=''
order by ???
|
| 我想請問一下
|
範例或相關連結 || 作者:阿隆 || 時間:2004-04-22 21:07
|| 最後更新:2004-04-22 21:07|| 修改||
刪除
那我如果想成以下的話,是否出現的是一樣的東西呢?
SELECT 表A.id,表A.name,表B.tel
FROM 表A ,表B
where 表A.name=表B.name order by id
若這兩者的答案是一樣的話,LEFT join又有何用呢?
|
|
|
|