我有一个涉及 JOINS 和 Union 语句的 MYSQL 查询,我可以通过查询多个表来生成 JSON 提要。 (我对 MYSQL 很弱,所以提前道歉。)
我现在必须添加评论。如果评论是关于单独表中的某些内容(例如文章),那么您可以对两个表进行 JOIN。
我遇到的问题是,如果评论是关于评论的,我需要来自 sambe 表的两行的信息,即新评论行 2,以及新评论所涉及的原始评论行 1。我不知道如何在单个查询中从一个表的两行获取数据。 我希望有一种方法或其他策略可以做到这一点。
这是查询的简化版本。
Articles
id|text|pic|authorid
Users
id|name|pic
Comments
id|articleid|userid|commentid|text
SELECT a.id as 'itemid',a.text as 'body',a.pic as 'itempic',u.name as 'authorname',u.pic as 'authorpic', nil as 'subtext'
FROM Articles `a`
LEFT JOIN
Users `u`
ON a.authorid = u.id
UNION
Select c.id as 'itemid',c.comment as 'body',nil as 'itempic',u.name as 'authorname',u.pic as 'authorpic', cm.text as 'subtext'
FROM COMMENTS `c`
/* THIS APPROACH DOES NOT SEEM TO WORK *?
LEFT JOIN
COMMENTS `cm`
ON cm.id = c.id
/* end approach */
LEFT JOIN
Users `u`
ON c.userid = u.id
WHERE c.articleid = a.id
GROUP by itemid
我是否走在正确的轨道上,或者您如何使用相同的查询两次点击一张桌子。感谢您的任何建议。
美好的一天。首先,我想澄清一下我的思维过程是否正确。
您想要根据文章 ID 获取属于某个帖子的所有评论 如果是,您可以使用此 SQL 查询来获取属于该文章的所有评论。 主要标准是将评论和文章连接起来,然后将用户连接到评论,因为文章与评论是一对多的关系,而评论与评论是一对一的关系。
因此,使用左联接从文章中获取所有评论,并根据评论表上的用户 ID 将用户加入到评论中。
下面提供了示例代码和视觉效果
SELECT A.id as 'itemid',
A.text as 'body',
A.pic as 'itempic',
U.name as 'authorname',
U.pic as 'authorpic',
C.id as 'commentId',
C.text as 'commentBody'
摘自文章 A LEFT JOIN 注释 AS C ON C.articleid = A.id 加入用户 AS U ON U.id =c.userid 其中 A.id = 1;
您可以根据您的设计调整从查询中选取的值。我希望它有帮助。
谢谢