From: [SQL]Join的觀念 Join,通常稱做交集、 兩張table,我們分別定義為Left table跟Right table。Left就是被交集的table (要稱做資料集合也可以),Right就是拿來交集的table。 => Outer Join的Outer可以省略,但Left或Right則不能省略 就像A x B = C,我們稱A為被乘數,B為乘數,一樣的意思。 Left table 就是Select * from [table1] ; Right table,則是被join的那一張table。 EX: Select * from [table1] Left join [table2] on [table1].fk=[table2].pk 兩張table join的條件(靠什麼來做交集),就是on後面的 [table1].fk=[table2].pk。 交集的條件不一定只有一個,Left table與Right table的交集後的結果,也有可能是空集合,也就是無符合的資料。 好,接著我們來給兩張表一些資料。 Table1: PK FK 1 a1 2 a2 3 a3 Table2: PK Description a2 a2很棒 a3 a3很棒 a4 a4很棒 當我們現在join的條件是Table1.FK與Table2.PK。 Inner Join,就代表Table1與Table2兩者,完全符合交集條件的資料集合。 也就是上面圖裡面,兩個圈圈共同圈起來的那個部分, SQL的範例,通常inner join我們會直接寫 Table1_PK Table1_FK Table2_Description 2 a2 a2很棒 3 a3 a3很棒 Select * from table1, table2 Where table1.FK=table2.PK Inner Join代表的是兩個table共同的部分才要篩選出來,所以誰是Left,誰是Right其實沒有多大分別。 於是,以我們的範例資料來說,這個例子會撈出 除了Inner以外,當然就是Outer了。 Outer又分兩種,一種是左邊的Outer,一種是右邊的Outer。