【发布时间】:2012-05-08 18:03:14
【问题描述】:
我有 8 张单独的桌子。每个表都有 id、一个日期时间字段和一些文本。
我在时间线视图的单个页面上显示来自所有表的组合数据,最近的条目位于顶部,每个表中的条目混合在此时间轴中。
现在最困难的部分 - 我需要为这个网站添加分页,所以我想在每个页面上准确显示 10 天(最后一页除外,可能少于 10 天)。 每个表的行数可能不定。
我已经为此苦苦挣扎了很长一段时间,但还没有想出一个优雅的解决方案。
这是一个示例(我将为此示例仅选择两个表以使其更简单)。
表A
4 月 1 日 | a1
4 月 5 日 | a2
4 月 7 日 | a3
表B
4 月 2 日 | b1
4 月 2 日 | b2
4 月 5 日 | b3
4 月 6 日 | b4
全局时间线如下所示
4 月 7 日 a3
4 月 6 日 b4
4 月 5 日 a2
4 月 5 日 b3
4 月 2 日 b2
4 月 2 日 b1
4 月 1 日上午 1 日
如果每个页面只显示 3 天,我需要它看起来像这样:
--- p1 ---
4 月 7 日 a3
4 月 6 日 b4
4 月 5 日 a2
--- p2 ---
4 月 5 日 b3
4 月 2 日 b2
4 月 2 日下午 1
--- p3 ---
4 月 1 日上午 1 日
问题是 - 我想不出一种优雅的方式来查询这些数据。这是我一直在搞乱的一些实时查询:
选择日期(d.entryTime)entryDate,日期(wc.changeTime)wcDate 来自日记条目 d 加入 water_change 厕所 在 d.aquariumId = wc.aquariumId 其中 d.aquariumId = 2 按条目日期分组 按 entryDate 排序 限制 10, 5
所以,对于一个表,我有这个查询: 选择日期(d.entryTime)entryDate 来自日记条目 d 其中 d.aquariumId = 2 按条目日期分组
它产生 13 个结果
入境日期
2012-01-13
2012-01-14
2012-01-25
2012-01-26
2012-01-31
2012-02-04
2012-02-17
2012-02-20
2012-02-25
2012-03-17
2012-03-31
2012-04-01
2012-04-06
还有另一个: 选择日期(wc.changeTime)changeDate 从 water_change wc 其中 wc.aquariumId = 2 按更改时间分组
它产生 8 个结果
2012-01-22
2012-01-26
2012-02-17
2012-02-25
2012-03-04
2012-03-10
2012-04-04
2012-04-24
两者之间共有三天 2012-01-26 2012-02-17 2012-02-25
所以我需要生成的查询必须有 13 + 8 - 3 行 = 18 行
找到了解决方案! (选择日期(d.entryTime)活动日期 来自日记条目 d 其中 d.aquariumId = 1 按活动日期分组) 联盟 (选择日期(wc.changeTime)活动日期 从 water_change wc 其中 wc.aquariumId = 1 按活动日期分组 按活动日期排序) 限制 10, 10
【问题讨论】:
-
定义您的问题。是查询的问题吗?把数据送到前端?分页?我不知道从哪里开始帮助你。
-
刚刚用一个例子和一些额外的注释编辑了原始问题。
标签: mysql sql pagination