免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2075 | 回复: 0
打印 上一主题 下一主题

SQL快速进阶---表格外连接 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-05-27 16:59 |只看该作者 |倒序浏览
之前我们看到的左连接(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。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP