我有一张桌子上摆满了学生们提交的不同项目。每个项目都应该由三个不同的评委来评判。所以还有一个分数表,包括projectd和judgeid。我正在尝试编写一个查询,它可以选择任何尚未经过三次判断的项目。
这是一些样品表。。。
项目

projectid | projectname
-----------------------
9         | Kintetics
11        | Volcano
15        | Robots
22        | Oceanlife

分数
scoreid (AI) | projectid | judgeid | score
------------------------------------------
1            | 9         | 15      | 5
2            | 11        | 15      | 18
3            | 9         | 23      | 12
4            | 11        | 23      | 11
5            | 9         | 45      | 19
6            | 22        | 15      | 3

我希望这个查询返回项目11、15和22,因为这三个项目还没有分配三个评委。

最佳答案

SELECT  a.ProjectID, a.ProjectName
FROM    Projects a
        LEFT JOIN Scores b
            ON a.ProjectID = b.ProjectID
GROUP   BY a.ProjectID, a.ProjectName
HAVING  COUNT(a.ProjectID) < 3

SQLFiddle Demo
若要进一步了解有关联接的更多信息,请访问以下链接:
Visual Representation of SQL Joins
输出
╔═══════════╦═════════════╗
║ PROJECTID ║ PROJECTNAME ║
╠═══════════╬═════════════╣
║        11 ║ Volcano     ║
║        15 ║ Robots      ║
║        22 ║ Oceanlife   ║
╚═══════════╩═════════════╝

关于mysql - 从一张表中选择另一张表中不存在的三次,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15572587/

10-13 02:16