连接(join)
假设有两个表,结构如下
<<test_store>>表
STORE_NAME | SALES |
---|---|
Los Angeles | 1500 |
San Francisco | 300 |
Boston | 700 |
<<test_geo>>表
REGION_NAME | STORE_NAME |
---|---|
East | Boston |
East | New York |
West | Los Angeles |
West | San Diego |
而我们要知道每一区 (region_name) 的营业额 (sales)。 Geo这个表格告诉我们每一区有哪些店,而 Store 告诉我们每一个店的营业额。若我们要知道每一区的营业额,我们需要将这两个不同表格中的资料串联起来.
使用如下查询语句:
SELECT A1.store_name, SUM(A2.Sales) SALES
FROM test_geo A1, test_store A2
WHERE A1.store_name(+) = A2.store_name
GROUP BY A1.store_name
查询结果如下
STORE_NAME | SALES |
---|---|
300 | |
Los Angeles | 1500 |
Boston | 700 |
我们想要把<<test_store>>表中部满足条件的数据也显示出来,就需要在where条件的另一侧加上(+)号..如上图所示.
条件是WHERE A1.store_name(+) = A2.store_name
<<test_store>>表中的San Francisco并不满足where条件.所以STORE_NAME没有显示,但是sales却显示了出来..
如果把条件改为:
WHERE A1.store_name = A2.store_name (+)
则结果为
STORE_NAME | SALES |
---|---|
San Diego | |
New York | |
Los Angeles | 1500 |
Boston | 700 |
这和上课时候就一样了..
哪头有+号哪头的otherside的信息即使不满足条件也会显示.