现在我们介绍连接(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
结果:
REGION |
SALES |
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 行的结果。
分享到:
相关推荐
SQL 连接 JOIN 例解左连接,右连接,全连接,内连接,交叉连接,自连接
SQL的几种连接:内连接、左联接、右连接、全连接、交叉连接
SQL优化--使用内连接(inner join)代替外连接(left join,right join)
外连接,内连接, left join, right join, full join, cross join 有图有真相
SQL 内连接,外连接:假设一堆男女在教堂,有夫妇有单身的,假设男为左表,女为右表......
SQL 左外连接,右外连接,全连接,内连接 四种连接的差异
内连接与外连接的精简写法,可用于sql和hql中,即使hql中两实体不存在实际上的主外键关系,也适用。
学习内连接和外连接的实例,可以很直观的看到他们的区别。
内连接、外连接、左链接、右链接................
sql左外连接、右外连接、内连接、全外连接的区别
对MSSQL中的内连接和外连接所得出的数据集不是很清楚的童鞋可以参考参考
Oracle PPT 文档\内部连接查询及应用.ppt 。
主要讲述了使用select进行内、外连接查询的内容
SQL基本SELECT查询语句_内外连接
左外连接右外连接,内连接区别,oracle的开发中很需要的,大家看看吧
右连接、左连接、全连接、内连接、交叉连接、自连接
TSpider 能够递回搜寻 HTML 内连接网站及分析其内包含的 E-Mail 电子邮件的非可视构件,能够配置产生线程上限 ( 1.2 版,附源码 ),作者 : Gordon Hamm。
SQL连接JOIN例解 (左连接,右连接,全连接,内连接,交叉连接,自连接)pdf
sql左连接,右连接,内连接,全连接详细讲解
数据库连接查询的学习,数据库连接查询的学习,数据库连接查询的学习