我正在尝试查询包含以下列的数据库(不属于我):
NumEpoca (epoch), Turma(class), Dia (day - indicates day of the week),
Hora (hour - each value indicates a 30mins time, a 3h class generate 6 tuples),
Disciplina (course), TipoAula (type of class, theoretical or practical),
Sala (classroom)
这基本上是一个课程表,所以对于一个给定的班级,在一周的同一天,我可以在一个星期上一节实践课,在另一个星期上一节理论课。
现在,我想得到一天的最小和最大小时数(这样我就可以计算出上课的开始和结束时间),但我也想得到他们的教室,我事先不知道是理论课还是实践课。
另外,有些课程只是实践性的,有些只是理论性的,所以我只想要一个教室。
我所做的询问,基本上给了我一切
LectureDetails(beginDate=2020-05-26 15:30:00, endDate=2020-05-26 18:30:00, classroom=L_H1/G.0.08)
LectureDetails(beginDate=2020-05-26 15:30:00, endDate=2020-05-26 18:30:00, classroom=G.0.08/L_H1)
正如你在这里看到的,我得到了相同的课程(在同一个小时开始和结束,两个教室teo和pract)。但是那天我只需要一个元组,我得到的是luh1/g0.08和g0.08/luh1。
"SELECT a1.Dia,MIN(a1.Hora),MAX(a1.Hora),a1.Sala, a2.Sala FROM Aulas as a1 LEFT JOIN Aulas as a2 " +
"on a1.Sala <> a2.Sala and a1.Disciplina = a2.Disciplina and a1.NumEpoca = a2.NumEpoca and a1.Turma = a2.Turma " +
"and a1.Dia= a2.Dia and a1.Hora = a2.Hora " +
"where NumEpoca = ? AND Turma = ? AND Disciplina=? GROUP BY a1.Dia,a1.Sala,a2.Sala"
提前谢谢。
1条答案
按热度按时间dgtucam11#
您可以通过使用
a1.Sala < a2.Sala
而不是不平等。但这并不是你想要的方法。尝试以下操作: