SQL 指令 (join)
SQL 指令 (join)
http://blog.blueshop.com.tw/pili9141/articles/52281.aspx
1 | 表a |
2 | |
3 | 欄1 欄2 |
4 | ---------------- |
5 | aa 1 |
6 | bb 2 |
7 | cc 9 |
8 | |
9 | 表b |
10 | |
11 | 欄a 欄b |
12 | ---------------- |
13 | 1 X |
14 | 2 Y |
15 | 3 Z |
16 | |
17 | inner join |
18 | |
19 | select 欄1,欄2,欄b from 表a,表b where 表a.欄2 = 表b.欄a |
20 | |
21 | --◎ 查表a、b的欄1、欄2、欄b的資料,以表a的欄2和表b的欄a做inner join |
22 | --◎ 資料表關聯後,資料皆存在才會被查取 |
23 | --◎ 結果如下: |
24 | |
25 | 欄1 欄2 欄b |
26 | ------------------------- |
27 | aa 1 X |
28 | bb 2 Y |
29 | |
30 | outer join |
31 | |
32 | 1. select 欄1,欄2,欄b from 表a,表b where 表a.欄2 = 表b.欄a(+); |
33 | |
34 | --◎ 查表a、b的欄1、欄2、欄b的資料,以表a的欄2和表b的欄a做outer join |
35 | -- 表b中的欄a資料可以不存在 |
36 | --◎ 資料表關聯後,被outer join的欄位無資料,也會被查取 |
37 | --◎ 若 表a.欄2 = 表b.欄a(+) 改成 表b.欄a(+) = 表a.欄2 之結果亦相同 |
38 | --◎ 結果如下: |
39 | |
40 | 欄1 欄2 欄b |
41 | ------------------------- |
42 | aa 1 X |
43 | bb 2 Y |
44 | cc 9 |
45 | |
46 | 2. select 欄1,欄2,欄b from 表a,表b where 表a.欄2 = 表b.欄a(+) and 表b.欄a is null; |
47 | |
48 | --◎ 查表a、b的欄1、欄2、欄b的資料,以表a的欄2和表b的欄a做outer join |
49 | -- 找出存在表a但不存在表b的資料 |
50 | --◎ 結果如下: |
51 | |
52 | 欄1 欄2 欄b |
53 | ------------------------- |
54 | cc 9 |