设为首页 加入收藏

TOP

SQL应用与开发:(五)多个数据表的连接(三)
2015-11-21 01:41:13 来源: 作者: 【 】 浏览:2
Tags:SQL 应用 开发 多个 数据 连接
,对“商品信息”表和“供应商信息”表进行交叉连接。要求返回商品的产地和供应商所在城市都是“上海市”或者构思“南京市”的相关信息。

SELECT 商品信息.商品名称,商品信息.产地,供应商信息.供应商名称

FROM 商品信息 CROSS JOIN 供应商信息

WHERE 商品信息.产地=供应商信息.供应商所在城市

AND (商品信息.产地='上海市' OR 商品信息.产地='南京市')

ORDER BY 商品信息.产地

5.2自连接

连接不仅可以再不同表之间进行,也可以使一个表同其自身进行连接,这种连接成为自连接,相应的查询称为子连接查询。子连接是与表本身进行的内连接或者外连接。

子连接的连接操作可以利用别名的方法实现一个表自身的连接。实质上,这种子身连接方法与两个表的连接操作完全相似。只是在每次列出这个表时便为它命名一个别名。

例如,对数据库“销售管理系统”中的“客户信息”表进行自连接,查询“客户地址”相同的客户信息,并在查询结果中只返回“客户地址”为“北京市海淀区”或者“北京市朝阳区”的相关信息。

SELECT A.客户姓名,A.联系电话,A.客户地址,B.客户姓名,B.联系电话

FROM 客户信息 A INNER JOIN 客户信息 B

ON A.客户地址=B.客户地址

WHERE A.客户地址='北京市海淀区'

OR A.客户地址='北京市朝阳区'

由于此查询涉及“客户信息”表与自身的连接,因此“客户信息”表以两种角色显示。要区分这连个角色,必须在FROM子句中为“客户信息”表中提供两个不同的别名(A 和B),这两个别名用来限定查询中的列名。如果希望消除客户与自身相匹配的行,则只需在上述语句中添加一个限定条件,即将上述语句改为:

SELECT A.客户姓名,A.联系电话,A.客户地址,B.客户姓名,B.联系电话

FROM 客户信息 A INNER JOIN 客户信息 B

ON A.客户地址=B.客户地址

WHERE (A.客户地址='北京市海淀区'

OR A.客户地址='北京市朝阳区')

AND A.客户姓名<>B.客户姓名

该查询结果和上述查询结果相比较,发现在该查询结果中消除了客户与其自身相匹配的行。

6.学习小结

在学习本章节的内容时,很是感到头疼,这内容也的确是多了点儿。但是,其联系却是十分的紧密,学起来不是很费力,总算把学的知识总结起来了。

在对于多个数据表的连接学习中,数据表的联系很是实际化,在不断练习中学到更多的知识。

首页 上一页 1 2 3 下一页 尾页 3/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇NoSQL简介 下一篇PostgreSQL数据表转换为excel

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: