2011-07-12 234 views
2

我有2代表的名字和职位如下帮助MySQL查询

职位表的结构是

ID | uid |文字|时间

如下表具有用户ID和追随者的用户ID如下表

UID的结构| followingid

现在我需要为了得到这个职位IDS像Twitter homefeed它会显示自己的岗位,也是我们以下张贴编写一个查询。

SELECT posts.id FROM posts 
INNER JOIN follows ON posts.uid = follows.followingid 
AND follows.uid = "'.$currentuser.'" OR posts.uid = "'.$currentuser.'" 

但是,如果下表中没有条目,则不起作用。

任何人都可以在此帮助。在此先感谢

+0

您正在迫使内连接,如果任何的记录不存在,这将不返回任何结果如下:表所以问题的根源是内连接。 – Devjosh

+0

也许你应该先把'follower'改成'follower'。 :) – dpp

+0

@domanokz更好,我改变它followid,因为两者都让我感到困惑。 –

回答

4

您基本上想要获取当前用户的所有帖子和用户的所有帖子后跟当前用户。所以这里是代码,我使用union。首先,我选择当前用户的所有帖子,然后选择当前用户所在的帖子。

select posts.id 
from posts 
where posts.uid = "'.$currentuser.'" 

union all 

select posts.id 
from posts 
inner join follows 
on follows.followingid = posts.uid 
where follows.uid = "'.$currentuser.'" 
+0

没有左连接没有工作因为它获取所有帖子ID,而不考虑条件。 –

+0

对不起 - 我编辑你的帖子,而不是我的:))) –

+0

@Vasanth - 我编辑了我的答案,请检查。 – dpp

1

尝试改变与一个LEFT JOIN,如:

SELECT posts.id FROM posts 
    LEFT JOIN follows ON posts.uid = follows.followingid 
     AND follows.uid = "'.$currentuser.'" 
WHERE posts.uid = "'.$currentuser.'" 
+0

没有左连接没有工作,因为它获得所有职位ID,无论条件如何。 –

+0

立即尝试查询 - 我将posts.uid条件放在'WHERE'子句中而不是'ON'中一个 –

+0

我现在试过了。同样的问题,它列出了所有的职位,无论条件如何。 –