将两个复杂的SQL语句合并为一个

时间:2016-04-21 15:57:35

标签: mysql sql select

我有以下2个SQL语句:

Select count(project.id) as '# Projects', c2.name as ' Country name' from project, country c2, project_country where project_country.project_id = project.id and project_country.country_id= c2.id  group by c2.name;


select count(user.id)  as '# Consultants',c1.name as ' Country name'  from user,consultant_profile, country c1  where c1.id= user.country_id and user.is_active=1 and user.type=0 and user.id = consultant_profile.user_id group by country.name ;

是否可以根据country.id字段组合这两个查询,因此我只有一个结果与#Projects,#Consultant和Country Name?

1 个答案:

答案 0 :(得分:1)

您可以在其他表上的两个聚合查询中加入country表:

SELECT c.name AS country_name, num_projects, num_consultants
FROM   country c
JOIN   (SELECT   pc.country_id, COUNT(p.id) AS num_projects
        FROM     project p
        JOIN     project_country pc ON p.id = pc.projcet_id
        GROUP BY pc.country_id) x ON x.country_id = c.id
JOIN   (SELECT   u.country_id, COUNT(u.id) AS num_consultants
        FROM     user u
        WHERE    u.is_active = 1 AND u.type = 0
        GROUP BY u.country_id) y ON y.country_id = c.id