我遇到了有关查询的问题,因为我没有所有记录而且我不知道为什么 这是查询
SELECT `ebspma_paad_ebspma`.`semana_dias`.`dia`,`ebspma_paad_ebspma`.`req_material_sala`.`sala`, `ebspma_paad_ebspma`.`req_material_tempo`.`inicio`, `ebspma_paad_ebspma`.`sala_ocupacao`.`id_ocup`, `ebspma_paad_ebspma`.`turmas`.`turma`
FROM `ebspma_paad_ebspma`.`sala_ocupacao`
INNER JOIN `ebspma_paad_ebspma`.`semana_dias`
ON (`sala_ocupacao`.`id_dia` = `semana_dias`.`id_dia`)
INNER JOIN `ebspma_paad_ebspma`.`req_material_sala`
ON (`sala_ocupacao`.`id_sala` = `req_material_sala`.`idsala`)
LEFT JOIN `ebspma_paad_ebspma`.`req_material_tempo`
ON (`sala_ocupacao`.`id_tempo` = `req_material_tempo`.`idtempo`)
LEFT JOIN `ebspma_paad_ebspma`.`turmas`
ON (`sala_ocupacao`.`id_turma` = `turmas`.`id_turma`)
where`ebspma_paad_ebspma`.`sala_ocupacao`.`id_turma` = '$turma'
GROUP BY `ebspma_paad_ebspma`.`sala_ocupacao`.`id_dia` , `ebspma_paad_ebspma`.`req_material_tempo`.`inicio` ASC";
运行此查询我几乎有记录,但这是一个学校的时间表,当一个班级被分为两组时,我有两个教室。有了这个查询,我只有一个组 例如,课程在下午1点开始,在两个教室(27和31),这个查询我应该在下午1点,教室X在27和31教室,但我只有第一个 要检查的图片http://postimg.org/image/u24r35fkz/ 我的数据库图片http://postimg.org/image/hyvpb1qz1/ce7a7320/
我的查询出了什么问题?
由于
更新1
我已将查询简化为
SELECT t2.`dia` , t3.`sala` , t4.`inicio` , t1.`id_ocup` , t5.`turma`
FROM `ebspma_paad_ebspma`.`sala_ocupacao` AS t1
INNER JOIN `ebspma_paad_ebspma`.`semana_dias` AS t2 ON ( t1.`id_dia` = t2.`id_dia` )
INNER JOIN `ebspma_paad_ebspma`.`req_material_sala` AS t3 ON ( t1.`id_sala` = t3.`idsala` )
LEFT JOIN `ebspma_paad_ebspma`.`req_material_tempo` AS t4 ON ( t1.`id_tempo` = t4.`idtempo` )
LEFT JOIN `ebspma_paad_ebspma`.`turmas` AS t5 ON ( t1.`id_turma` = t5.`id_turma` )
WHERE t1.`id_turma` =12
GROUP BY t1.`id_dia` , t3.`idsala` , t4.`inicio`
现在我可以看到所有类但不是正确的顺序,顺序应该由t4。inicio
和日(id dia)
答案 0 :(得分:0)
您不是按sala
进行分组,因此MySQL会表现不佳,并为您提供符合其他要求的随机行。功能更好的数据库引擎会给您一个错误,指出您没有聚合或分组所有结果列。
如果您将sala
添加到GROUP BY
,您应该会看到差异。
对于排序:你并没有要求数据库ORDER BY
任何东西,所以行将按照它们碰巧出现的顺序排列。可能想要添加ORDER BY t4.inicio, t1.id_dia
来处理它。