PHP Mysql,无法获得正确的结果
我试图将两个表合并在一起,但我无法得到我想要的结果 因此,我所寻找的结果是,我希望能够“呼应”出用户参与的所有主题,通过创建主题或在主题内发表帖子/评论 我试过这样的方法:PHP Mysql,无法获得正确的结果,mysql,Mysql,我试图将两个表合并在一起,但我无法得到我想要的结果 因此,我所寻找的结果是,我希望能够“呼应”出用户参与的所有主题,通过创建主题或在主题内发表帖子/评论 我试过这样的方法: SELECT * FROM Topics LEFT JOIN Posts ON Topics.topic_creator = 'AAAA' OR Posts.Post_creator = 'AAAA' 但是使用这个sql我并没有真正得到结果,它给了我多个相同的Topic\u id样本,
SELECT *
FROM Topics
LEFT JOIN Posts ON Topics.topic_creator = 'AAAA'
OR Posts.Post_creator = 'AAAA'
但是使用这个sql我并没有真正得到结果,它给了我多个相同的Topic\u id
样本,有时它只是打印出所有的主题/帖子
因此,我正在使用的表是:
表1-主题:
表2-员额
如果有更有经验的人愿意帮助我解决这个PHP问题,我将不胜感激
提前感谢您可以使用列page\u id连接两个表,以便执行以下操作:
SELECT *
FROM Topics
INNER JOIN Posts ON Topics.Page_id = Posts.Page_id
WHERE Posts.Post_creator = 'the_name';
这只是一个例子,我希望它能帮助你。试试这个
SELECT * FROM Topics t LEFT JOIN Posts p ON t.topic_creator = p.Post_creator
试试这样:
SELECT DISTINCT *
FROM Topics
LEFT JOIN Posts ON Topics.Page_id = Posts.Page_id
where Topics.topic_creator = 'AAAA' OR Posts.Post_creator = 'AAAA'
您的问题基本上不是php问题,而是sql问题。您的SQL连接应该如下所示
SELECT *
FROM Topics
LEFT JOIN Posts ON Topics.id = Posts.Topic_id
WHERE Topics.Topic_creator = 'AAA'
最好的方法是使用
联合体
。一个查询返回用户创建的所有主题,另一个查询返回用户发布的所有主题
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
阻止它为主题中的每个帖子返回一行。这将满足您的要求:
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\u id、t.Topic\u creator和p.Post\u creator上有索引请将这些图像作为问题中的文本发布。图像往往会在问题不存在的地方消失。这使得这个问题对其他类似问题的人来说毫无用处,这也是这个问题的基本前提,所以它只会返回用户创建的主题,而不是他们发布的主题。这是完全错误的。它不会返回任何与用户正在寻找的
AAA
相关的内容。这将返回所有主题的一行(因为它是左加入
),以及主题创建者编写的所有帖子。您应该接受对您最有帮助的答案。单击答案旁边的复选标记。