我正在研究MYSQL,我正在寻找一种按比例显示数据分组的解决方案。
我有一个COURSE
表,其中包含课程ID和课程比例。我有另一个表ASK
,其中包含askers id,另一个字段指向id COURSE
表(ID对应)。使用一个SQL查询,我想显示所有要求按比例分组并拒绝其他要求。需求由资历列表考虑。
例如,我有3门课程:第一门课程只允许2人,另外2门课程只允许一个人。在ASK表中,我们有3个问题(JACK,JOE和JOHN)指向第一个课程,(JOHN AND JOE)2指向第二个和第三个(JACK AND JOHN)。 JACK是年纪较大的,在其约翰之后和JOE之后。
我想看看:
course id studentName
-------------------------
1 JACK
1 JOHN
2 JOHN
3 JACK
答案 0 :(得分:1)
SELECT c.courseID
s.studentName
FROM course AS c
JOIN asks AS a
ON a.courseID = c.courseID
JOIN student AS s
ON s.studentName = a.studentName
JOIN asks AS a2
ON a2.courseID = c.courseID
JOIN student AS s2
ON s2.studentName = a2.studentName
AND s2.seniority <= s.seniority
GROUP BY c.courseID
, c.ratio
, s.studentName
HAVING c.ratio >= COUNT(*)
ORDER BY c.courseID
, s.seniority