MySQL:Feed帖子显示的次数太多了

时间:2013-07-08 03:53:43

标签: mysql sql

我目前正在与其他4个人在一个小社交网络上合作。我正在研究饲料,我遇到了一个小问题。

我基本上已经知道问题发生的原因,但我不知道应该如何修复它。

我所拥有的是2张桌子。帖子本身有1个表(称为posts),另一个表用于用户朋友(称为users_friends)。

帖子表: This is the posts table.

users_friends 表:

This is the users_friends table

JOIN这两个表格,以便我只能显示您是朋友的用户的帖子。

我的查询如下:

SELECT * 
FROM posts 
JOIN users_friends
ON posts.username = users_friends.friend 
OR posts.username = '{$db['username']}'
WHERE users_friends.user = '{$db['username']}'
ORDER BY timestamp DESC

$db['username'] =登录用户用户名

由于我的用户shawn31313users_friends表格中显示两次,因此每个帖子都会加倍。使用此查询的结果是:

enter image description here
我不知道如何解决这个问题。这是我第一次使用JOIN而且我对MySQL一般都是新手,所以我不知道现在该做什么。谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

我认为您的查询存在一些问题。当我查看你的数据库结构,然后我可以看到post表中有用户名列。该用户名是发布评论的用户,对吧?如果是这样,那么你只需检查该用户是否在你的朋友列表中。

你可以做点什么

SELECT *
FROM POSTs
WHERE USERNAME IN (SELECT FRIENDS FROM USER_FRIENDS WHERE USER = 'shawn31313' union all select 'shawn31313' )

更快的查询将是:

SELECT *
FROM POSTs AS A INNER JOIN (SELECT FRIENDS FROM USER_FRIENDS WHERE USER = 'shawn31313' union all select 'shawn31313' ) AS B ON A.USERID   = B.FRIENDS

逻辑是找到你所有的朋友然后找到那些的所有帖子。