SELECT p.*
FROM StatusUpdates p
JOIN FriendRequests fr
ON (fr.From = p.AuthorId OR fr.To = p.AuthorId)
WHERE fr.To = ".$Id." OR fr.From = ".$Id."
AND fr.Accepted = 1
ORDER BY p.DatePosted DESC
我正在使用这个SQL代码,而somone在另一个问题上为我写的那一刻。我正在使用PHP,但这不应该有太大的区别,因为我正在做的唯一事情是将变量连接到它。
它的意图是通过你所有的朋友,获得他们所有的状态帖子,并订购它们。它工作正常,但它根本不会选择“$ Id”的帖子,或者你拥有的朋友数量
例如,如果您有5个朋友,它会选择我们的帖子5次。我只希望它能做到这一次。我怎么能这样做?
答案 0 :(得分:1)
GROUP BY p.id
或SELECT DISTINCT p.id, p.*
答案 1 :(得分:1)
如果您想显示帖子ID,无论朋友数量多少,您都需要使用LEFT JOIN
而不是加入。并GROUP BY p.id
以便不会多次显示相同的帖子:
SELECT p.*
FROM StatusUpdates p
LEFT JOIN FriendRequests fr
ON ((fr.From = p.AuthorId OR fr.To = p.AuthorId) AND fr.Accepted = 1)
WHERE p.AuthorId = ".$Id."
GROUP BY p.id
ORDER BY p.DatePosted DESC