2017-04-15 38 views
0

的情况我有合并两个SQL查询如何两个SQL查询这样一个查询的输出成为另一个

select a.name from Subjects a join Courses b on(a.id=b.subject) group by a.name having count(b.id) >=20; 

这将返回与20周或更多的课程科目名称。

select course from course_enrolments group by course having count(student)<20; 

这将返回参加该计划的学生少于20人的课程。

我怎样才能结合这两个queires,使我可以得到20个或更多的产品和少于20名学生参加的科目名称?

Courses.id = Course_enrolment.course可以用来连接表的课程和Course_enrolments

任何帮助将不胜感激。

回答

0

试试这个:

select a.name 
from Subjects a join Courses b on(a.id=b.subject) 
where b.id in (select course 
    from course_enrolments 
    group by course 
    having count(student)<20 
) 
group by a.name 
having count(b.id) >=20; 
+0

作品!也非常感谢 –

+0

,我想要输出类似于a.code ||' '|| a.name而不只是a.name。当我把这个,它给了我一个错误,说a.code应该被添加到组。当我将它添加到分组时,它会给出错误的输出。我该如何解决这个问题? –

+0

我做了类似于a.code,a.name这样的返回错误输出的组合 –

0

试试这个:

SELECT 
FROM (SELECT a.name, 
     b.id as courseid 
    FROM Subjects a 
    JOIN Courses b 
     ON a.id = b.subject 
    GROUP BY a.name 
    HAVING count(a.id) >= 20) s 
JOIN (SELECT course 
    FROM course_enrollments ce 
    GROUP BY course 
    HAVING count(*) < 20) c 
ON c.course = s.courseid 
相关问题