来源:自学PHP网 时间:2015-04-16 10:51 作者: 阅读:次
[导读] 到目前为止我们所看到的SELECT语句都是简单查询,即从单个数据库表中检索数据的单条语句。SQL还允许创建子查询,即嵌套在其他查询语句中的查询。下面给出嵌套查询的例子。一个表...
到目前为止我们所看到的SELECT语句都是简单查询,即从单个数据库表中检索数据的单条语句。SQL还允许创建子查询,即嵌套在其他查询语句中的查询。 下面给出嵌套查询的例子。 一个表示存储订单信息,包括订单号,客户ID,订单日期等,如下所示:
一张表示存储订单物品信息,如下:<喎"http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+PGltZyBzcmM9"http://www.2cto.com/uploadfile/Collfiles/20140717/201407170913536.png" alt="\"> 还有一张表存储的是客户的信息,如下:
假如现在的需求是要找出订购物品TNT2的所有客户。我们发现通过第二张订购物品表能够获取到订单编号,依据订单编号,可以再第一张订单信息表中获取到相应的客户id,通过客户id即可以在第三张表中查询到客户信息了: 因此有 TNT2 ----> order_num ----> cust_id-----> cust_name,依据之前的SELECT语句可以分条来查询:
现在可以把第一个查询变为第二个查询的子查询来做:
同理我们可以把三个查询语句嵌套到一条SQL语句中,嵌套的SQL语句由内向外计算,即最里面的SELECT语句计算出的结果给外一层的SELECT语句来用:
另外还可以将计算字段作为子查询, 如,我们需要计算出custem表中以个客户需要支付多少钱?先用一个SELECT找出该客户有哪些订单,再将这些订单的价钱加在一起: 先看cust_id = 10001的订单 20005,20009相加的情况:
SUM()函数是进行列相加,正好可以把total当成一列来使用,进行求和, IN(20005,20009)转换为SELECT语句就比较简单了:
下面语句是计算每一个客户所需要支付的总金额,是对以上SQL语句的进一步改进,一次求出所有的客户的应付金额:
|
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com