2021-06-06

第7章 连接查询
语法:

内连接:
select fieldlist from table1 【inner】 join table2 on table1.column1 = table2.column2 【where condition】

自然连接:
select fieldlist from table1 natural join table2 【where condit】

三表连接查询的语法:
SELECT fieldlidt
FROM rable1
JOIN table2 ON table1.coulumn1=table2.column2_1
JOIN table3 ON table2.coulumn2_2=table3.column3
【where condition】

两表连接查询语法格式:
SELECT fieldlist FROM rable1,table2
WHERE rable1.column1=table2.column2
【and 其他条件】
一、查询bus数据库,实现如下需求:
1.统计每一家公交公司所属线路的站点总数
实现代码:

SELECT
	l.company 公司名,
	count(*) 站点总数 
FROM
	line l,
	line_station ls 
WHERE
	l.lineNO = ls.lineNo 
GROUP BY
	公司名;

运行结果:
在这里插入图片描述
2.计算经过站点“解放大道古田四路”的公交线路的数量以及营运车辆数量
实现代码:

SELECT
	count(*) 线路数量,
	sum( number ) 运营车辆数 
FROM
	line l,
	line_station ls 
WHERE
	l.lineNo = ls.lineNo 
	AND station = '解放大道古田四路';

运行结果:
在这里插入图片描述
3.计算每条公交线路的司机人数,并显示司机人数大于 3 的分组信息,按司机人数逆序显示;
实现代码:

SELECT
	l.lineID 线路ID,
	l.lineNo 线路号,
	count(*) 司机人数 
FROM
	line l,
	vehicle v,
	driver d 
WHERE
	l.lineID = v.lineID 
	AND d.driverID = v.driverID 
GROUP BY
	lineNo 
ORDER BY
	司机人数 desc;

运行结果:
在这里插入图片描述

二、查询easyshopping数据库,实现如下需求:
1.统计每件商品的销售数量和销售金额,要求按照销售量和销售金额升序显示商品名、销售量和销售金额
思路:
由于需要统计每件商品的销售数量和销售金额,即使某种商品没有被订购过也需要显示,所以可以采用左连接的方法依次建立商品表和订单明细表的联系
运行代码:

SELECT
	g.goodsName 商品名,
	sum( od.quantity ) 销量,
	sum( od.quantity * g.unitPrice ) 销售金额 
FROM
	ordersdetail od,
	goods g 
WHERE
	g.goodsID = od.goodsID 
GROUP BY
	商品名
ORDER BY
	销量,销售金额;

运行结果:
在这里插入图片描述

2.计算每个订单的金额,要求按照订单下单日期升序和订单金额降序显示订单 ID、订单下单日期、订单金额和顾客姓名
思路:
需要连接订单表,订单明细表,商品表和客户表。

实现代码:

	SELECT
	o.ordersID 订单ID,
	o.ordersDate 下单日期,
	sum( od.quantity * g.unitPrice )订单金额,
  c.cName 客户名
FROM
	orders o,
	ordersdetail od,
	goods g,
	customer c 
WHERE
	o.ordersID = od.ordersID 
	AND od.goodsID = g.goodsID 
	AND o.customerID = c.customerID 
GROUP BY
	o.ordersID 
ORDER BY
	下单日期,
	订单金额 DESC

运行结果:
在这里插入图片描述
注意:明确表名,记住代码

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值