Chinaunix

标题: SQL快速进阶---表格外连接 [打印本页]

作者: L_DBA    时间: 2008-05-27 16:59
标题: SQL快速进阶---表格外连接
之前我们看到的左连接(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。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2