Php 查询架构以从跟随某人的用户处获取帖子
我想在我的应用程序中实现以下系统,类似于twitter类型的以下系统 我有一个posts表,其中存储了用户的所有posts,该表的结构如下: id |用户id |标题|描述|图像|地址|日期 这是我的表格用户结构: id |电子邮件|姓名|密码|注册日期 这是我的下表结构: 用户标识|跟随用户标识 在下表中,我将存储哪个用户跟随谁的数据, 例如,如果用户_id 1跟随用户id 10,那么我将在该表中存储此信息 我不知道我的MySQL数据库结构是否可以为查询获得最佳优化,但我试图以一种好的方式进行优化,如果您有任何建议,我将很高兴听到 但现在我想问的主要问题是,我应该如何编写查询来获取用户关注的用户的帖子Php 查询架构以从跟随某人的用户处获取帖子,php,mysql,sql,Php,Mysql,Sql,我想在我的应用程序中实现以下系统,类似于twitter类型的以下系统 我有一个posts表,其中存储了用户的所有posts,该表的结构如下: id |用户id |标题|描述|图像|地址|日期 这是我的表格用户结构: id |电子邮件|姓名|密码|注册日期 这是我的下表结构: 用户标识|跟随用户标识 在下表中,我将存储哪个用户跟随谁的数据, 例如,如果用户_id 1跟随用户id 10,那么我将在该表中存储此信息 我不知道我的MySQL数据库结构是否可以为查询获得最佳优化,但我试图以一种好的方式进行
例如,我跟踪10个人,他们在posts表中都有一些帖子,我想写一个查询命令来返回我跟踪的用户帖子。。。如果你能帮助我,我将非常感激。。。谢谢这将返回您所关注的所有用户的所有帖子
select *
from posts
where user_id in(
select distinct following_user_id
from follow_table
where user_id=myid)
此处应选择myid userid这将返回您跟踪的所有用户的所有帖子
select *
from posts
where user_id in(
select distinct following_user_id
from follow_table
where user_id=myid)
这里myid应该是用户id
我应该如何编写查询以获取用户正在跟踪的用户的帖子
您只需按以下方式联接表:
SELECT a.post
FROM posts a
JOIN users b
ON (a.id = b.id) -- join key
JOIN follow_users c
ON (a.user_id = c.follow_user_id) -- join key
WHERE a.id = <required id to filter the rows> -- filter criteria
确保为联接键和筛选条件创建了适当的索引
我应该如何编写查询以获取用户正在跟踪的用户的帖子
您只需按以下方式联接表:
SELECT a.post
FROM posts a
JOIN users b
ON (a.id = b.id) -- join key
JOIN follow_users c
ON (a.user_id = c.follow_user_id) -- join key
WHERE a.id = <required id to filter the rows> -- filter criteria
确保为连接键和筛选条件创建适当的索引。在posts列中,ID是标识列还是等于表\u users中的ID?如果它与表_users中的id相同,则使用此查询 选择B.名称作为PosterName,A.描述作为Post,X.名称作为FollowerName 发帖 内部联接表\u用户B 在A.ID=B.ID上 表C中的内部联接 在C.user\u id=A.user\u id上 内部联接表 在X.ID=A.following\u user\u ID上
^这将返回海报名称、帖子本身和关注者名称。如果这不是您需要的,那么请更清楚地说明您需要什么。在posts列中,ID是标识列还是等于表中的ID?如果它与表_users中的id相同,则使用此查询 选择B.名称作为PosterName,A.描述作为Post,X.名称作为FollowerName 发帖 内部联接表\u用户B 在A.ID=B.ID上 表C中的内部联接 在C.user\u id=A.user\u id上 内部联接表 在X.ID=A.following\u user\u ID上
^这将返回海报名称、帖子本身和关注者名称。如果这不是您需要的,那么请更清楚地说明您需要什么。感谢您的帮助,是的,它们是相同的,posts中的userid=users中的id\u table=userid在follow table中,不要忘记添加order by date子句,这样它就不会返回相同的行。感谢您的帮助,是的,它们是相同的,posts中的userid=users中的id\u table=follow tableYw中的userid,不要忘记添加一个order by date子句,这样它就不会返回相同的行。@Payamkurehpaz不客气!如果它帮助了你,那么请将它标记为已回答,它也会帮助其他人。请过关。@Payamkurehpaz不客气!如果它帮助了你,那么请将它标记为已回答,它也会帮助其他人。请仔细检查一下。