Mysql 基于给定表中的外键查找多个表中的行数
我有一个数据库,其中包含我关心的以下表Mysql 基于给定表中的外键查找多个表中的行数,mysql,sql,join,Mysql,Sql,Join,我有一个数据库,其中包含我关心的以下表 JobAreas(我要查询其他表的基表) JobSkills(每个工作技能都通过外键(即父项id)属于一个工作区域) 作业(每个作业必须通过外键(即类别id)属于作业区域) UserSkills(此表包含与作业区域相关的作业技能) 我正在连接桌子结构 我正在尝试创建一个SQL查询,它可以为我提供各种工作领域的技能数量、工作数量和人员数量。虽然计算在特定工作领域提供服务的用户似乎很困难,因为这是间接联系的。我尝试使用以下查询获取所有工作区域的技能数量和
select
t.id,
t.title,
count(s.parent_id) as skillsCount,
count(m.category_id) as jobCount
from
job_areas t
left join skill_types s ON s.parent_id = t.id
left join job_requests m ON m.category_id = t.id
group by
t.id
但它没有给出正确的数据。有没有人能指导我如何实现这一目标
您正在沿着不同的维度连接。解决此问题的快捷方法是使用
count(distinct)
:
如果每项工作只有少数几个技能和类别,那么这就很好了。如果有多个查询,则需要在联接之前进行预聚合
或使用相关子查询
select t.id, t.title,
count(distinct s.parent_id) as skillsCount,
count(distinct m.category_id) as jobCount
from job_areas t left join
skill_types s
ON s.parent_id = t.id left join
job_requests m
ON m.category_id = t.id
group by t.id;