2017-04-15 39 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 
相關問題