SQL 表格连接的用法

 

 

现在我们介绍连接(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, SUM(A2.Sales) SALES
FROM Geography A1, Store_Information A2
WHERE A1.store_name = A2.store_name
GROUP BY A1.region_name

结果:

REGIONSALES
East$700
West$2050

在第一行中,我们告诉 SQL 去选出两个栏位:第一个栏位是 Geography 表格中的 Region_name 栏位 (我们取了一个别名叫做 REGION);第二个栏位是 Store_Information 表格中的 sales 栏位 (别名为 SALES)。请注意在这里我们有用到表格别名:Geography 表格的别名是 A1,Store_Information 表格的别名是 A2。若我们没有用表格别名的话, 第一行就会变成

SELECT Geography.region_name REGION, SUM(Store_Information.Sales) SALES

很明显地,这就复杂多了。在这里我们可以看到表格别名的功用:它能让 SQL 句容易被了解,尤其是这个 SQL 句含盖好几个不同的表格时。

接下来我们看第三行,就是 WHERE 子句。 这是我们阐述连接条件的地方。在这里,我们要确认 Geography 表格中 Store_name 栏位的值与 Store_Information 表格中 store_name 栏位的值是相等的。这个 WHERE 子句是一个连接的灵魂人物,因为它的角色是确定两个表格之间的连接是正确的。如果 WHERE子句是错误的,我们就极可能得到一个笛卡儿连接 (Cartesian join)。笛卡儿连接会造成我们得到所有两个表格每两行之间所有可能的组合。在这个例子中,笛卡儿连接会让我们得到 4 x 4 = 16 行的结果。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值