在PHP和MySQL中显示我的帖子以及关注者帖子
问题描述:
我正在尝试制作一个类似Facebook的主页,因此它可以显示来自我关注的人的帖子,但我无法看到自己的帖子职位,因为我不能跟随我自己。这是我写的SQL代码行(它包含PHP变量):在PHP和MySQL中显示我的帖子以及关注者帖子
SELECT *
FROM user_posts
INNER JOIN user_following ON user_posts.username = user_following.username
WHERE user_following.follower = '$me->username'
ORDER BY id DESC
LIMIT 0, 15
- 的
user_posts
表包含了所有的帖子。 - 的
user_following
表包含所有跟随数据,其中username
在用户被跟踪,并且follower
是继username
-
$me->username
被记录在用户的用户名的用户。
谢谢,提前!
答
有几个不同的方式对皮肤此查询:
子查询
SELECT *
FROM user_posts
WHERE user_posts.username = 'bob'
OR user_posts.username IN(
SELECT username
FROM user_following
WHERE user_posts.username = user_following.username
)
LIMIT 0, 15
http://sqlfiddle.com/#!9/6bf2c6/9
使用用户表
需要GROUP BY
或DISTINCT user_posts.id
,这是非最佳。
SELECT
user_posts.*
FROM users
LEFT JOIN user_following ON users.username = user_following.username
INNER JOIN user_posts ON (
users.username = user_posts.username
OR user_following.follower = user_posts.username
)
WHERE users.username = 'bob'
GROUP BY user_posts.id
LIMIT 0, 15
http://sqlfiddle.com/#!9/d91be/1
重要!确保并索引表格中的这些列。否则,表格会变得更大(尤其是user_following
),表现会受到影响。
+0
考虑到OP没有提供'CREATE TABLE'模式,并且你不得不使用截图,那么Fiddles非常棒! – halfer
'mysql_ *'方法很久以来不推荐使用。请使用PDO或'mysqli_ *'方法。 –
我必须使用'mysql'作为我正在使用的网站'mysql' – Arqetech
我猜你应该使用'LEFT JOIN'并添加'OR user_posts.what_field_holds_username ='$ me-> username' '到你的'WHERE'子句。还要注意'*'带回谓词表和连接表的每一列,所以名称冲突可能是一个问题。 –