求助:数据库查询

有两张表,赛事表match和在线人数表online_log。要在一张表格上展示出赛事开始前十分钟的时间内的在线人数
赛事表match:name(赛事名称),start_time(开始时间)
在线人数表online_log:time(时间点:’2020-08-16 10:00:00’),count(该时间点活跃人数)。在线人数表是每五分钟统计一次,所以要取最近的时间
要展示的数据如下:

求助:数据库查询

思路:

求助:数据库查询

😂,想请大家指点一下,有没有更好的办法

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 8

问题描述没有很清楚额。你的疑惑是对于sql查询的疑惑,还是对于这个业务层实现有疑惑。

  • 不是很清楚你online_time 的数据是从哪里来的,是什么时候触发记录的。
  • 还有你最后要获取的数据,究竟是啥
3年前 评论

@cheer

想展示成这样的,把两个不同表的数据整合到一个表格上面在前端展示出来。

online的数据是服务端每五分钟统计一次,统计当前时间平台的在线人数。(因为不能确保开赛的那个时间一定有统计,所以取开赛前十分钟最接近的那个时间的统计)

因为像我这样循环去查询的话,赛事多了会拖垮服务端,所以我想问下能不能有好一点的解决方法。

3年前 评论

循环查库没被打死吗

3年前 评论

@pigzzz 还没被打😂,所以在找更好的解决办法

3年前 评论

@cy_echo 取当前页赛事的 最小时间前10分钟和最大时间的时间间隔内的在线记录集合,然后循环根据时间去筛选集合中的数据,这样只要查一次在线记录,

3年前 评论

你后面这个 人数在线表是只跟开始时间有关么 不应该是每个赛事有对应的在线人数么

3年前 评论

每次我遇到这种情况,都是使用pluck查出来外键id,然后用whereIn找出数据,然后再进行匹配。

3年前 评论

如果按你的说法,那么我觉得你的做法应该是: 1.当前时间十分钟内是否有比赛,没有,那么都不用去读数据库,这张表格数据为空。 2.当前时间十分钟内有比赛,那么,只查这场比赛的人数,其他比赛由于不在十分钟内,所以没必要查。

如果不是这样,那么你的表述和你的代码做法就有问题,请重新描述你的需求。

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!