免费注册 查看新帖 |

Chinaunix

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

SQL快速进阶---SQL语句教程--表格连接 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-05-27 11:46 |只看该作者 |倒序浏览
这一节我们介绍连接(join)的概念,要了解连接,需要用到许多之前已介绍过的指令,先假设有以下的两个表格:
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  

而我们要知道每一区(region_name)的营业额(sales),geography这个表格告诉我们每一区有那些店,而store_information表格告诉我们每一个店的营业额,若我们要知道每一区的营业额,我们需要将这两个不同的表格中的资料串联起来,当我们仔细了解这两个表格后,我们会发现他们可经由一个相同的栏位store_name连接起来,我们先将sql句列出:
  SELECT A1.region_name REGION,SUN(A2.Sales) SALES
  FROM Geography A1,Store_information A2
  WHERE A1.store_name = A2.store_name
  GROUP BY A1.region_name
结果:
REGION SALES
East   $700
West   $2050
在第一行中,我们告诉SQL去选两个栏位;第一个栏位是Geography表格中的Region_name栏位(别名为REGION0);第二个栏位是Store_Information表格中的sales栏位(别名sales),在这里我们有用到别名:Geography表格的别名是A1,Store_information表格的别名是A2,若是没有用到表格别名的话,第一行就会变成:
SELECT Geography.region_name REGION,SUN(store_information.sales)SALES
很明显这就复杂多了,在这里我们看到表格的别名的公用,它能让SQL句容易被了解,尤其是这个SQL句含盖好几个不同的表格时。在第三行,就是WHERE子句,这是我们阐述连接条件的地方,在这我们要确认Geography表格中的Store_name栏位的值与Store_information表格中Store_name栏位的值是相等的,这个WHERE子句是一个连接的灵魂人物,它的角色是确定两个表格之间的连接是正确的,如果WHERE子句是错误的,我们就极有可能得到一个笛卡儿连接(Cartesian join),笛卡儿连接会造成我们得到所有两个表格每两行之间所有可能的组合,在这个例子中,笛卡儿连接会让我们得到4*4=16行的结果。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP