【发布时间】:2023-04-02 17:41:01
【问题描述】:
我正在开发一个网络/社交网站,我正在尝试创建一个函数来返回在您访问同一页面时访问同一页面的用户。
如何通过对“READING”表中的 user_id 进行计数和分组来从“USERS”表中选择用户?
数据库结构如下:
用户
- user_id
- 用户名
- ...
阅读
- 身份证
- user_id
- update_timestamp
- ...
应该返回的是这样的数组
user
- user_id
- user_name
- user_first_name
- ...
user
- user_id
- ...
这是我目前的查询
SELECT r.user_id, u.* FROM reading r, users u GROUP BY r.user_id AS count WHERE u.user_id = r.user_id ORDER BY count DESC
示例表
用户
// user_id // user_name // user_email
-------------------------------------
123 / mentos / m@gmail.com
-------------------------------------
321 / freshmaker / f@gmail.com
-------------------------------------
231 / hubba / h@gmail.com
阅读
// id // user_id // timestamp
--------------------------------------
1 / 123 / 201501050420
2 / 321 / 201501050420
输出应该是什么示例
-ARRAY
-user
- 123
- mentos
- m@gmail.com
-user
- 321
- freshmaker
- f@gmail.com
【问题讨论】:
-
几个问题:您提到“计数和分组”,但您的示例输出不包括任何类型的聚合,例如
COUNT()。你是什么意思?您如何确定“同时”标准?你有reading.update_timestamp——应该有一些阈值,比如update_timestamp在过去60秒内有一个值吗? -
忘记将它放在示例中,reading.update_timestamp 将每 5 分钟更新一次,例如,如果您在页面 A 而我在页面 A,我将不得不看到你和我在同一页上。我希望这能更好地解释它。
-
请张贴两个表格中的一小部分行样本 - 足以说明一组用户同时阅读和一组不同时阅读。鉴于该数据,还请发布查询输出的表格。组/计数仍未得到很好的解释。