今天是个好日子,
这是我在stackoverflow上的第一篇文章。老实说,社区是伟大的,充满了知识。我通常会接受它,但直到今天我才决定注册一个帐户。我需要这个神奇社区的知识来进行小型快速连接查询。
由于一些奇怪的原因,我无法让它工作。
这是关系表:
我想要输出的内容(在本例中我将使用userID 10):
显示来自用户ID 10遵循的所有用户的推文表的推文(包括用户ID 10本身)
换句话说:假设用户ID 10被称为Bob而Bob跟随Bell和Rogers。
所以我想输出鲍勃的推文,鲍勃跟随的每个人:贝尔和罗杰斯
提前感谢您的帮助和时间:)
编辑:
我很抱歉!以下是示例数据:
样本数据
再一次谢谢你 :)
没有样本数据,很难确定,但这个查询应该有效。它从表中选择与userID(1)或该用户所关注的任何人匹配的所有推文:
SELECT DISTINCT t.*
FROM User u
JOIN Follow f ON f.follower = u.userID
LEFT JOIN Tweet t ON t.userID = u.userID OR t.userID = f.following
WHERE u.userID = 1
输出(适用于您的样本数据)
tweetID userID tweet
1 1 Hello
2 4 Hey
3 1 Hi Folks!
6 4 Something
7 3 Heya!
这将选择用户10和他跟随的任何人的推文文本。请注意,您需要将ID放在2个位置。
SELECT t.userID, t.tweet FROM Tweet t
INNER JOIN
(SELECT following FROM Follow WHERE follower=10) uf
ON t.userID=uf.following
UNION
SELECT ut.userID, ut.tweet FROM Tweet ut
WHERE ut.userID=10
输出(userID,tweet):
3 tweet2
2 tweet3
1 tweet1
这应该工作:
select t.tweet
from tweet t inner join
(select b.userid,a.following
from follow a inner join users b
on a.follower = b.userid) u
on t.userid = u.following
where u.userid = 1 or t.userid = 1
order by t.date,tweet