2021-06-02

7.2 多表连接查询
7.2.1 多表连接查询方法
多表连接查询语法

SELECT
	fieldlist 
FROM
	table1
	JOIN table2 ON table1.coulumn1 = teable2.coulumn2_1
	JOIN table3 ON table2.coulmn2_2 = table3.coulumn3 [ WHERE CONDITION ]

说明(1)table2与table1和table3 两两相连
(2)三表以上连接查询的方法与三表连接查询的方法一样,均是通过两两相连的方式实现。
72.2 多表连接查询应用
示例
分析:车牌号和型号来源于车辆表(vehicle);司机姓名来源于司机表(driver);线路号、起点站终点站来源于线路表(line),所以要连接三张表:车辆表,司机表,线路表
SQL语句如下:

SELECT NAME
	司机姓名,
	plateNo 车牌号,
	model 型号,
	lineNo 线路号,
	FROM_station 起点站,
	end_station 终点站
	
FROM
	Vehicle V
	JOIN driver D ON V.driverID = D.driverID
	JOIN line L ON V.lineID = L.lineID 
WHERE
	type = '非空调车';

在这里插入图片描述
注意:表的关联有没有错,字段名写完之后不需要逗号隔开。
7.2.3 简单多表连接查询
简单多表连接查询语法

SELECT
	fieldlist 
FROM
	table1,
	table2,
	table3 
WHERE
	table1.column1 = table2.column2_1 
	AND table2.column2_2 = table3.column3 [ 
	AND 其他条件]

7.2.4 实践练习
(1)采用简单多表连接查询 连接三张表:订单表、订单明细表和商品表 且获取ID为4 的订购明细信息,输出商品名、单价、和件数

SELECT
	goodsName 商品名,
	unitPrice 单价,
	quantity 件数 
FROM
	orders o,
	ordersdetail od,
	goods g 
WHERE
	o.ordersID = od.ordersID 
	AND od.goodsID = g.goodsID 
	AND o.ordersID =4

在这里插入图片描述
(2)连接4张表:客户表、订单表、订单明细表和商品表

SELECT
	o.ordersID 订单ID,
	ordersDate 下单日期,
	goodsName 商品名,
	unitPrice 单价,
	quantity 件数 
FROM
	customer c,
	orders o,
	ordersdetail od,
	goods g 
WHERE
	c.customerID = o.customerID 
	AND o.ordersID = od.ordersID 
	AND od.goodsID = g.goodsID 
	AND cName = '王传华'

在这里插入图片描述
7.3.4 实践练习
(1)由于需要获取所有客户的基本信息,如果采用左连接加以实现,必须从左至右依次连接客户表和订单表,此时客户表将作为坐表,

SELECT
	cName 姓名,
	ordersID 订单ID,
	ordersDate 下单日期 
FROM
	customer c
	LEFT JOIN orders o ON c.customerID = o.customerID

在这里插入图片描述
如果采用右连接,从左至右依次连接订单表和客户表,此时客户表作为右表

SELECT
	cName 姓名,
	ordersID 订单ID,
	ordersDate 下单日期 
FROM
	orders o
	RIGHT JOIN customer c ON o.customerID = c.customerID

在这里插入图片描述

7.4.2
(1)由于需要统计每件商品的销售数量和销售金额,即便某种商品没有被订购过也需要显示,所以采用左连接的方式依次建立商品表和订单明细表的联系

SELECT
	g.goodsName 商品名,
	SUM( od.quantity ) 销售量,
	SUM( od.quantity * g.unitPrice ) 销售金额 
FROM
	goods g
	LEFT JOIN ordersdetail od ON g.goodsID = od.goodsID 
GROUP BY
	g.goodsID 
ORDER BY
	销售量,
	销售金额

在这里插入图片描述
(2)需要连接订单表,订单明细表,商品表和客户表,

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

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值