我有表称为:activities
和deficiencies
.
activities
表包含学生注册的所有活动。deficiencies
表包含学生可能因注册活动而出现的所有缺陷。
以下是带有示例数据的表结构:
活动表
activityid title
-------------------------------------------------------------
1 Student Retreat
2 Student Orientation
缺陷表
deficiencyid activity_id deficiency status
-------------------------------------------------------------
1 1 NARRATION CLEARED
2 1 PHOTO CLEARED
3 1 REPORT CLEARED
4 2 NARRATION WAITING
5 2 PHOTO CLEARED
6 2 REPORT WAITING
对于每个活动条目,表中将有三行deficiencies
。如果列出的项目的所有状态都已经存在,我希望能够列出每个活动一次CLEARED
。因此,如果一个或多个仍然存在WAITING
- 它们不会在查询中列出。
我试图使用这个查询来做到这一点,但我没有得到任何幸运:
SELECT * FROM deficiencies,activities WHERE status='CLEARED' AND activityid=activity_id AND COUNT(deficiencyid)=3 GROUP BY activity_id ORDER BY deficiencyid ASC
我从 MySQL 得到以下信息:
Invalid use of group function
我期待的输出是表中的第一条记录activities
。
SELECT
在SELECT
另一个SELECT
子查询中只使用一个查询而不使用多个查询的最佳解决方案是什么?表中将有数千条记录,因此我希望可以使用最有效的查询。