php - 您关注的人的 mysql Activity 源(点赞、评论等)

标签 php mysql android-activity feed

一些背景:

我正在开发一种社交网络。 有带有下一个表的数据库:

users(user_id, user_name, password, etc.)
posts(post_id, user_id, post_text, post_data, etc.)
followings(relationship_id, follower_id, following_id, added_date_time)
likes(like_id, user_id, post_id, added_date_time)
comments(comment_id, user_id, post_id, comment_text, added_date_time)

问题是:

如何实现查询,以获取有关我的关注者(我关注的人)最近做了什么的信息(例如,有人喜欢/评论了某些内容)并按 date_time 对这组信息进行排序?

我可以使用一个查询来完成它吗?或者我必须自己进行多次查询并用 PHP 处理所有这些东西?

最好的方法是什么?

最佳答案

您可以像这样在选择联合中标准化输出

SELECT t.type, t.user_id, u.user_name, t.type_id, t.post_id, t.text, t.added_date_time 
  FROM (
  SELECT 'posts' as type, p.user_id, p.post_id as type_id, p.post_id, post_text as text, p.added_date_time
    FROM posts p  
    JOIN followings f ON (f.following_id = p.user_id) 
   WHERE f.follower_id = @user
   UNION
  SELECT 'comments' as type, c.user_id, c.comment_id as type_id, c.post_id, comment_text as text, c.added_date_time
    FROM comments c
    JOIN followings f ON (f.following.id = c.user_id)
   WHERE f.follower_id = @user
   UNION
  SELECT 'likes' as type, l.user_id, l.like_id as type_id, l.post_id, post_text as text, l.added_date_time
    FROM likes l
    JOIN followings f ON (f.following.id = c.user_id)
    JOIN posts p ON (l.post_id = p.post_id)
   WHERE f.follower_id = @user
  ) as t 
JOIN users u ON (t.user_id = u.user_id) 
ORDER BY added_date_time DESC;

因此您只需一次查询即可获取所有数据。

我希望它对你有用。

关于php - 您关注的人的 mysql Activity 源(点赞、评论等),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23988959/

相关文章:

javascript - HTML选择更改,必须更改PHP Echo变量

java - Android - 将数据保存到内部存储

mysql - 在 SQL 中为排名 ID 创建 "average grade list"

MySql 启动失败

java - 调用 initLoader() 后 Loader 不启动?

Android - 为应用程序的所有 Activity 执行代码 onResume 和 onPause?

php - Laravel + Vuejs 具有数据库值和更新的输入表单

HTML 中的 PHP WordPress Foreach H2 标题

PHP MySQL 查询不工作

MySQL 更新越来越慢