我正在尝试制作一个脚本来显示我和我的 friend 的最新帖子。 有 3 个与此相关的表 - statusUpdates(包含帖子)、friends(使用 ID 的 friend 之间的链接)和 users(包含网站所有用户的详细信息)。 我目前使用的脚本如下。
$myQuery = mysql_query ("SELECT * FROM statusUpdates AS su
LEFT JOIN (friends AS fr) ON
(fr.frHostID = su.authorID OR fr.frContactID = su.authorID)
WHERE (fr.frHostID = 105090)
GROUP BY su.statusID
ORDER BY su.statusID
DESC LIMIT 0,5");
请注意,105090是我自己的ID。
问题是,当我没有 friend 时,即使我进行了多次状态更新,也不会显示任何帖子。
解决方案是在 friend 表中创建一行,将我添加为我自己的 friend 。 但在这种情况下,我必须防止我自己的名字出现在“显示好友列表”页面和任何其他相关页面中。
我最初使用INNER JOIN
并遇到上述问题。然后我来了一个similar issue ,并按照建议使用 LEFT JOIN 修改了我的脚本。它似乎解决了该帖子的OP问题,但没有解决我的问题。
我无法在那篇文章中提交评论(可能是因为它已有 2 岁了)。所以我创建了这篇文章。
最佳答案
更新:我没有考虑到您也想要您 friend 的帖子。
尽管您已将答案标记为正确,但由于 IN
语句通常比 JOIN
慢,您可以尝试以下操作:
SELECT *
FROM statusUpdates AS su LEFT JOIN friends AS fr
ON fr.frContactID = su.authorID
WHERE (fr.frHostID = 105090 or su.authorID = 105090)
GROUP BY su.statusID
ORDER BY su.statusID
DESC LIMIT 0,5
初步答案:
只需更改 where 条件:
WHERE (fr.frHostID = 105090)
到
WHERE (su.authorID = 105090)
原因是您在左连接的右侧部分放置了 where 条件,因此您强制了好友的存在。
顺便说一句,请注意这两篇文章:
Why shouldn't I use mysql_* functions in PHP?
和
关于php - 没有从 SQL 查询中获取输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17421249/