1, Multi table join query method
If the information source of the query is multiple tables, a multi table connection query can be established by connecting two tables.
Syntax:
SELECT feldlist FROM table1 JOIN table2 ON table1.column1=table2.column2_1 JOIN table3 on mable2.colamn2_2=table3.column3[where condition]
In daily data query application practice, the data to be obtained comes from more than three tables. At this time, it needs to be queried through multi table connection.
For example: obtain the license plate number, model and driver's name of all non air-conditioned vehicles, the line number of the line, starting station and terminal station information.
Analysis: the license plate number and model are from the vehicle table; The driver's name comes from the driver list; The line number and starting station come from the line table, so three tables need to be connected: Vehicle table, driver table and line table
The SQL code is as follows:
select d.name Driver's name,v.plateNo license plate number,v.model model,l.lineNo line number,l.from_station starting station, l.end_station Terminus from vehicle v JOIN driver d ON v.driverID=d.driverID JOIN line l ON l.lineID=v.lineID WHERE type='Non air conditioned vehicle';
Execution result:
2, Simple multi table join query
If you directly list all the tables to be joined in the FROM clause, and then specify the join condition in the WHERE clause, this is a simple multi table query.
The query syntax using two tables is as follows:
SELECT fieldlist from table1,table2 WHERE table1.column1=table2.column2[and Other conditions]
The three connection syntax tables are as follows:
ELECT fieldlist from table1,table2,table3 WHERE table1.column1=table2.column2_1 and table2.column2_2=table3.column3[and Other conditions]
example:
1. Obtain the license plate number, model and driver's name of all non air-conditioned vehicles, route number of the route, starting station and terminal station information.
The code is as follows:
SELECT name,plateNo,model,lineNo,from_station,end_station from vehicle v,driver D,line l where v.driverID=D.driverID and v.lineID=l.lineID and type='Non air conditioned vehicle';
Execution result:
2. Obtain the information of all drivers of the second bus company. The driver's name, ID card, gender and telephone number are required to be output.
The code is as follows:
SELECT name,licenseNo,gender,phone from vehicle v,driver d,line l where v.driverID=d.driverID and v.lineID=l.lineID and company='No.2 bus company';
Execution result:
practice:
1. Count the total number of stops on the route of each bus company
The code is as follows:
SELECT company,COUNT(*) FROM line_station ls,line l WHERE ls.lineNo=l.lineNo GROUP BY company ORDER BY COUNT(*)
Execution result:
2. Calculate the number of bus lines passing through the station "Jiefang Avenue 4th Road" and the number of operating vehicles
The code is as follows:
SELECT COUNT(*),sum(number) from line_station ls,line l WHERE ls.lineNo=l.lineNo and station='Gutian 4th Road, Jiefang Avenue'
Execution result:
3. Calculate the number of drivers of each bus line, and display the grouping information with the number of drivers greater than 3, which is displayed in reverse order according to the number of drivers
The code is as follows:
SELECT lineNo ,COUNT(*)Number of drivers from driver d,vehicle v,line l WHERE d.driverID=v.driverID AND v.lineID=l.lineID GROUP BY lineNo having count(*)>3 ORDER BY Number of drivers desc;
Operation results:
4. Count the sales quantity and sales amount of each commodity, and display the commodity name, sales volume and sales amount in ascending order of sales volume and sales amount
The code is as follows:
SELECT g.goodsName Trade name, sum( od.quantity ) sales volume, sum( od.quantity * g.unitPrice ) sales amount FROM goods g LEFT JOIN ordersdetail od ON g.goodsID = od.goodsID GROUP BY g.goodsID ORDER BY sales volume,sales amount;
Operation results:
5. Calculate the amount of each order. It is required to display the order ID, order date, order amount and customer name in ascending order of order date and descending order of order amount
The code is as follows:
SELECT o.ordersID order,o.ordersDate Order date ,sum(od.quantity*g.unitPrice) Order amount,c.cName Customer name 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 Order date ,Order amount desc;
Operation results:
After class summary:
1. Keep up with the teacher's thinking and listen carefully in class
2. Take notes carefully, simple and clear
3. We should knock more and practice more