好的,我认为这个问题的答案在某个地方,但我找不到它......(甚至我的标题也很糟糕)
简而言之,我想从关联表的一部分中获得最少数量的组
第一,请记住,这已经是 5 个表(+1k 行)加入过滤器和分组的结果,我必须在像香蕉一样强大的产品服务器上运行很多次......
2nd, 这是一个假的案例,你的问题是我的问题
经过一些查询,我得到了这个数据结果:
+--------------------+
|id_course|id_teacher|
+--------------------+
| 6 | 1 |
| 6 | 4 |
| 6 | 14 |
| 33 | 1 |
| 33 | 4 |
| 34 | 1 |
| 34 | 4 |
| 34 | 10 |
+--------------------+
如您所见,我有 3 门课程,女巫由多达 3 位老师教授。我需要参加每一门课程,但我希望尽可能少的不同老师(我很害羞......)。
我的第一个查询
应该回答: 每门独特的课程我需要最少的老师人数是多少?
有了这个数据,它是一个1
,因为教师 1 或教师 4 为这 3 人制作课程。
第二次查询
现在我已经获得了这些课程,我想按照以下时间表参加另外两门课程,the32
和 the 50
:
+--------------------+
|id_course|id_teacher|
+--------------------+
| 32 | 1 |
| 32 | 12 |
| 50 | 12 |
+--------------------+
我的问题是:对于 id_course N,我需要再找一位老师吗?
我想按课程检查,所以“检查课程 32”,无需同时检查多个
我认为最好的方法是使用第一个查询中排名最低的教师列表来计算内部连接,所以我们的数据只有两个:Teacher(1, 4)
。
对于 Course 32
, Teacher2 不做这个,但作为 Teacher1 做,Courses(6, 33, 34, 32)
我不必再找另一位老师。
对于 Course 50
,唯一的老师是 Teacher12,所以我不会在我选择的老师中找到匹配的,我必须再找一个(所以这些数据总共有两个)
最好的问候,布拉格