gpt4 book ai didi

Mysql 查询涉及多个表的 group by 和 order by

转载 作者:行者123 更新时间:2023-11-29 22:00:50 26 4
gpt4 key购买 nike

我在查询时遇到问题,因为我没有所有记录,而且我不知道为什么这是查询

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";

运行这个查询,我几乎有记录,但这是一个学校时间表,当一个类(class)分为 2 个组时,我有两个教室用于这个类(class)。通过这个查询,我只有一组例如,类(class)于下午 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)给出

最佳答案

您没有按 sala 进行分组,因此 MySQL 会表现得很糟糕,并为您提供符合其他要求的随机行。功能更好的数据库引擎会给您一个错误,指出您尚未聚合或分组所有结果列。

如果将 sala 添加到 GROUP BY,您应该会看到差异。

对于排序:您不会要求数据库ORDER BY任何内容,因此行将按照它们出现的顺序排列。可能需要添加 ORDER BY t4.inicio, t1.id_dia 来处理该问题。

关于Mysql 查询涉及多个表的 group by 和 order by,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32669096/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com