Mysql 获取具有外键的表的记录计数
我有以下表格: 人员:Mysql 获取具有外键的表的记录计数,mysql,Mysql,我有以下表格: 人员: person_id | name | ------------------------- 1 | John | 2 | Adam | 3 | Elen | ------------------------- 订单: order_id | person_id | product | -----------------------------
person_id | name |
-------------------------
1 | John |
2 | Adam |
3 | Elen |
-------------------------
订单:
order_id | person_id | product |
---------------------------------------------
1 | 1 | TV |
2 | 1 | Radio |
3 | 1 | toothbrush |
4 | 2 | mp3 player |
5 | 2 | watch |
6 | 3 | ps 3 |
---------------------------------------------
现在我需要查询上面的表以获得以下结果:
person_id | name | order_count |
-----------------------------------------
1 | John | 3 |
2 | Adam | 2 |
3 | Elen | 1 |
-----------------------------------------
我试过这样的方法:
SELECT u.person_id, u.name, COUNT(o.order_id) FROM persons AS p LEFT JOIN orders AS o ON (p.person_id=o.person_id);
不幸的是,这不起作用。你知道怎么解决这个问题吗
select Persons.person_id, Persons.name, p.order_count
from Persons
inner join (select person_id, count(*) as order_count from Orders group by person_id) p
on Persons.person_id = p.person_id
如果您还需要获得那些没有任何订单的人员,请使用左连接而不是内部连接
SELECT persons.id, persons.name, COUNT(orders.id) AS order_count FROM orders LEFT JOIN persons ON (persons.person_id=orders.person_id) GROUP BY persons.name
试试这个
从TBO中选择o.person\u id、p.name、counto.person\u id作为订单计数
加入tblpersons p on o.person\u id=p.person\u id
按o.person\u id、p.name分组
select o.person_id,p.name,count(o.person_id) as order_count from tblorders o
Join tblpersons p on o.person_id=p.person_id
group by o.person_id,p.name
select o.person_id,p.name,count(o.person_id) as order_count from tblorders o
Join tblpersons p on o.person_id=p.person_id
group by o.person_id,p.name