编辑:我通过从每个答案中提取想法来回答我自己的问题。感谢大家的帮助c:
解决方案:
SELECT *
FROM status
WHERE author IN
(SELECT user1
FROM friends
WHERE user2='$username'
AND accepted='1')
OR author IN
(SELECT user2
FROM friends
WHERE user1='$username'
AND accepted='1')
UNION
SELECT *
FROM status
WHERE author = '$username'
我正在建立一个网站,尽管我对SQL非常陌生。我有一个状态系统和一个朋友系统。我想要做的是创建一个新闻源,所以只有用户和他们的朋友发布的帖子才会出现。
我有三个表:用户,朋友和状态(帖子)。
所以,我想要做这样的事情(是的,我试过写它)
Select * from status where author = $username or author = any friends of $username
答案 0 :(得分:2)
尝试(我不知道你的表结构):
SELECT s.*
FROM status AS s
LEFT JOIN users AS u
(ON u.user_id = status.user_id)
LEFT JOIN friends AS f
(f.user_id = u.user_id)
WHERE u.username = $username # or u.user_id = $user_id
答案 1 :(得分:1)
如果您的朋友表是(用户,朋友),它看起来像
where author in (select user from user_friend where friend = $username)
或类似的东西。它也可以使用连接,并且连接通常比嵌套查询/嵌套选择更有效。
顺便说一下,你现在容易受到SQL注入攻击,你应该修复。