2016-02-12 77 views
0

我试图将两个表连接在一起,但是我无法得到我想要的结果。PHP Mysql,无法获得正确的结果

所以我在寻找的结果是,我希望能够以“回声”的所有在用户已经参与,通过创建主题OCH制造话题里面一个帖子/评论的话题。

我已经试过类似:

SELECT * 
FROM Topics 
LEFT JOIN Posts ON Topics.topic_creator = 'AAAA' 
       OR Posts.Post_creator = 'AAAA' 

但有了这个SQL我真的不明白的结果,它给我的一样多Topic_id样本,有时它只是打印出的所有主题/帖子。

所以我的工作表是:

表1 - 主题:

topics - table

表2 - 帖子

posts - table

我会很感激,如果有经验的人想帮我解决这个PHP问题。

在此先感谢

+1

请公布这些图片作为文本索引题。在问题不存在的情况下,图像往往会消失。这使得这个问题对其他类似问题无用,这就是SO – RiggsFolly

回答

0

您可以加入同列PAGE_ID两个表,所以你可以做这样的事情:

SELECT * 
FROM Topics 
INNER JOIN Posts ON Topics.Page_id = Posts.Page_id 
WHERE Posts.Post_creator = 'the_name'; 

这只是一个例子,我希望它可以帮助你。

-1

试试这个

SELECT * FROM Topics t LEFT JOIN Posts p ON t.topic_creator = p.Post_creator 
+0

的基本前提,这是完全错误的。它不会返回任何与他正在查找的用户“AAA”相关的内容。 – Barmar

+0

这将为所有主题返回一行(因为它是'LEFT JOIN'),并且还会创建主题创建者编写的所有帖子。 – Barmar

0

尝试类似的东西:

SELECT DISTINCT * 
FROM Topics 
LEFT JOIN Posts ON Topics.Page_id = Posts.Page_id 
where Topics.topic_creator = 'AAAA' OR Posts.Post_creator = 'AAAA' 
0

你的问题基本上不是一个PHP的问题,而是一个SQL问题。你的SQL加入应该是这个样子

SELECT * 
FROM Topics 
LEFT JOIN Posts ON Topics.id = Posts.Topic_id 
WHERE Topics.Topic_creator = 'AAA' 
+0

这只会返回用户创建的主题,而不是他们发布的主题。 – Barmar

0

做,这是一个UNION的最好方法。一个查询返回的所有主题用户创建的,另外一个返回所有的主题,用户发布英寸

SELECT * 
FROM Topics 
WHERE Creator = 'AAA' 
UNION 
SELECT DISTINCT t.* 
FROM Topics AS t 
JOIN Posts AS p ON p.Topic_id = t.id 
WHERE t.Creator != 'AAA' 
AND p.Post_creator = 'AAA' 

另外,还要注意的是,第二个查询只选择t.*,因为你只是想主题的信息,没有信息关于他的所有帖子。 DISTINCT阻止它为主题中的每个帖子返回一行。

+0

您应该接受最能帮助您的答案。点击答案旁边的复选标记。 – Barmar

0

这会做你想要什么:

select * from Topics t 
join Posts p 
on t.id = p.Topic_id 
where t.Topic_creator = 'AAA' 
or p.Post_creator = 'AAA' 

确保您有t.id,p.Topic_id,t.Topic_creator和p.Post_creator