【发布时间】:2016-02-17 14:33:45
【问题描述】:
好的,我认为这个问题的答案在某个地方,但我找不到它...... (甚至我的标题都不好)
简而言之,我想从关联表的一部分中获得最少数量的组
第一,请记住,这已经是 5 个表(+1k 行)加入过滤器和分组的结果,我将不得不在像香蕉一样强大的 prod 服务器上运行很多次。 ..
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 人制作课程。
第二次查询
现在我已经获得了这些课程,我想参加另外两门课程,32 和 50,时间表如下:
+--------------------+
|id_course|id_teacher|
+--------------------+
| 32 | 1 |
| 32 | 12 |
| 50 | 12 |
+--------------------+
我的问题是:对于 id_course N,我需要多找一位老师吗?
我想逐门查看,所以“查看32门课程”,不需要同时查看多个
我认为最好的方法是使用第一个查询中排名最低的教师列表来计算内部连接,因此我们的数据只有两个:Teacher(1, 4)。
对于课程32,Teacher2 不做这个,但作为Teacher1 做Courses(6, 33, 34, 32),我不必再找另一个老师。
对于课程50,唯一的老师是Teacher12,所以我找不到我选择的老师,我必须再找一个(所以总共有两个数据)
最好的问候,布拉格
【问题讨论】:
标签: mysql sql performance advanced-search