多表查询:http://www.w3school.com.cn/sql/sql_join.asp
1.SQL join 用于根据两个或多个表中的列之间的关系,从这些表中查询数据。
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM PersonsINNER JOIN Orders
ON Persons.Id_P = Orders.Id_P ORDER BY Persons.LastName
除了我们在上面的例子中使用的 INNER JOIN(内连接),我们还可以使用其他几种连接。
下面列出了您可以使用的 JOIN 类型,以及它们之间的差异。
- JOIN: 如果表中有至少一个匹配,则返回行
- LEFT JOIN: 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。
- RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
- FULL JOIN: 只要其中一个表中存在匹配,就返回行
- inner join 在表中存在至少一个匹配时返回行。如果 "Persons" 中的行在 "Orders" 中没有匹配,就不会列出这些行
2.多表统计查询
我有一个表 h_travel 用户表 还有一个表h_travel_line 数据表
两个表都有 u_id 值
我要查出所有的h_travel表信息并且同时统计改用户已经发布了多少条数据
selct * from h_travel
select count(u_id) from h_travel_line where u_id = h_travel.u_id
这两条语句写成一个
例如结果是这样的
ID UID NAME AGE LINECOUNT
编号 用户编号 名称 年龄 已线路数
1 23 李磊 20 87
2 24 张三 23 24
select *,(select count(u_id) from h_travel_line where u_id = a.u_id) 已线路数
from h_travel a
如此便可
自己的:select *,(select sum(p.P_Price) as price from payTrace as p where p.P_Xh=s.Id) from studentI as s where s.Recomm=4
1.select sum(p.P_Price) as price from payTrace as p where p.P_Xh=s.Id 通过id把缴费金额统计起来
2.select *,score from studentI as s where s.Recomm=4 根据推荐人id 获取旗下信息