- 论坛徽章:
- 0
|
之前我们看到的左连接(left join),又称为内部连接(inner join)。在此情况下,要两个表格内都有同样的值,那一笔资料才会被选出。如果想要列出一个表格中的每一笔资料,无论它的值在另一个表格中有没有出现,这时就要用到SQL OUTER JOIN(外部连接)的指令。外部连接的语法以数据库的不同而不同,在ORACLE上,会在WHERE子句中要选出所有资料的那个表格之后加上“(+)”来代表说这个表格中的所有资料都是我们要的。
Store_Information 表格
store_name Sales Date
Los Angeles $1500 Jan-05-1999
San Diego $250 Jan-07-1999
Los Angeles $300 Jan-08-1999
Boston $700 Jan-08-1999
Geography 表格
region_name store_name
East Boston
East New York
West Los Angeles
West San Diego
我们要知道每一间店的营业额,如果我们用一个普通的连接,我们会漏掉“New York”这个店,因为它并不存在于Store_information这个表格中,所以在这样的情况下,我们要用到外部连接来串联这两个表格。
SELECT A1.store_name,SUM(A2.Sales) SALES
FROM Georgraphy A1,Store_information A2
where a1.store_name=a2.store_name (+)
GROUP BY A1.Store_name
这里我们使用了Oracle的外部连接语法
结果:
store_name SALES
Boston $700
New York
Los Angeles $1800
San Diego $250
当第二个表格没有相对的资料时,SQL会传回NULL值,在此例中“New York”并不存在于Store_Information表格,所以它的“SALES”栏位是null。 |
|