按比例和资历列表分组IN SQL

时间:2011-07-10 16:04:39

标签: mysql sql

我正在研究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

1 个答案:

答案 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