【问题标题】:MYSQL group by queryMYSQL 按查询分组
【发布时间】:2015-09-28 17:55:38
【问题描述】:

我的 MySQL 数据库中有下表

巴士名称

id |busname

路线

id|route_name

时间表

id | bus_id | route_id | trip |direction |bus_time
  • 一辆公共汽车每天包含许多行程
  • 每个行程包含 2 个方向 (0|1)
  • 0 表示源到目的地

  • 1 表示目标到源

现在我想按行程显示数据组,其中 bus_id="some_id" 以及每个行程数据的每一页。如果我点击下一步,那么我需要显示第二次行程数据

BusRouteName |Trip | Departure | Destination|

Newyork        1         8 a.m       10.am
Ausi           1         9 a.m       11.20 a.m

在上述数据巴士中,早上 8 点从纽约出发,第一次在上午 10 点返回

我在 MySQL 中尝试了很多查询,但似乎没有产生正确的输出

SELECT * FROM timings t inner join routes r on t.route_id=r.id inner join busnames b on t.bus_id=b.id where b.id=1

谁能告诉我如何获取基于行程的数据?

【问题讨论】:

  • 为什么是 Oracle 和 sqlite 标签?
  • 投反对票的人请发表你投反对票的原因,这样我就可以改进我犯的错误

标签: mysql


【解决方案1】:

也许尝试按 BusRoute 和 Trip 分组,并使用 bus_time 的最小值和最大值来获取出发时间和目的地时间。

类似这样的东西(未测试):

SELECT r.route_name, t.trip, min(t.bus_time) as Departure, max(t.bus_time) as Destination FROM timings t 
inner join routes r on t.route_id=r.id 
inner join busnames b on t.bus_id=b.id 
where b.id=1
group by r.route_name, t.trip

如果您有更复杂的条件,您可以按功能查看分区。见https://dev.mysql.com/doc/refman/5.6/en/partitioning-selection.html

【讨论】:

  • “有子句”中的未知列“b.id=1”
  • 为什么 HAVING 子句而不是 WHERE?
  • @FabianLang.its 好的没问题。无论如何谢谢你的回答
猜你喜欢
  • 1970-01-01
  • 2011-07-24
  • 2018-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-14
  • 2015-02-12
  • 1970-01-01
相关资源
最近更新 更多