- 论坛徽章:
- 0
|
这一节我们介绍连接(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行的结果。 |
|