Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php SQL查询从表中获取记录_Php_Mysql_Sql_Select_Posts - Fatal编程技术网

Php SQL查询从表中获取记录

Php SQL查询从表中获取记录,php,mysql,sql,select,posts,Php,Mysql,Sql,Select,Posts,当用户_id=3是兴趣表中唯一关注某个主题的人时,此查询工作正常。兴趣表包括id、follower_id和(兴趣_id,如体育主题) posts表包含一列主题,用户可以关注这些主题,一旦您关注某个主题,我会将其插入兴趣表中。现在我正在尝试检索用户发布的帖子,我想获取的帖子可以是我发布的帖子(帖子中有一列名为user_id,是发布该帖子的用户的id),也可以是我关注的主题帖子 这里的问题是,当我运行此查询时,我会收到重复的帖子,因为其他用户正在关注相同的主题 如果您没有从兴趣点查询任何字段,它可能

当用户_id=3是兴趣表中唯一关注某个主题的人时,此查询工作正常。兴趣表包括id、follower_id和(兴趣_id,如体育主题)

posts表包含一列主题,用户可以关注这些主题,一旦您关注某个主题,我会将其插入兴趣表中。现在我正在尝试检索用户发布的帖子,我想获取的帖子可以是我发布的帖子(帖子中有一列名为user_id,是发布该帖子的用户的id),也可以是我关注的主题帖子


这里的问题是,当我运行此查询时,我会收到重复的帖子,因为其他用户正在关注相同的主题

如果您没有从
兴趣点
查询任何字段,它可能不应该在联接中。将其用法转换为
中的
存在的
条件将消除重复项。此外,您应该注意隐式联接(即,在
from
子句中列出几个表)被认为是一种不好的做法,您可能应该使用显式联接:

SELECT posts.id, posts.body, posts.posted_at, posts.likes, posts.dislikes, users.`userName`
FROM users,posts,interests
WHERE (posts.user_id =3
OR interests.follower_id =3 AND posts.topics IN(SELECT interest_id FROM interests WHERE follower_id = 3))
AND users.ID = posts.user_id 
AND posts.topics = interests.interest_id
ORDER BY posts.posted_at DESC
SELECT   posts.id, posts.body, posts.posted_at, posts.likes, posts.dislikes,
         users.userName
FROM     posts 
JOIN     users ON users.id = posts.user_id 
WHERE    posts.user_id = 3 OR 
         posts.topics IN (SELECT interest_id 
                          FROM   interests 
                          WHERE follower_id = 3)
ORDER BY posts.posted_at DESC