问题描述
||
我有以下表格:
users(id,name)
posts (id,text,userId)
comments (id,userId,postId)
我想返回一个帖子,其所有者名称,评论以及每个评论的所有者。我无法获得评论所有者的数据。我这样写:
SELECT posts.id,posts.text,users.id,users.name,comments.text AS commentText,commenters.id,commenters.name
FROM posts
JOIN users
ON posts.userId = users.id
LEFT JOIN comments
ON posts.id = comments.postId
LEFT JOIN users AS commenters
ON comments.userId = users.id
WHERE posts.id = @postId
此查询的问题是commenters.id和commenters.name列变回空白。知道我哪里出错了吗?
解决方法
嗯,分解查询。
好吧,首先进行一点更正
SELECT posts.id,posts.text,users.id,users.name,comments.text AS commentText,commenters.id,commenters.name
FROM posts
JOIN users
ON posts.userId = users.id
LEFT JOIN comments
ON posts.id = comments.postId
LEFT JOIN users AS commenters
ON comments.userId = commenters.id
(您有users.id,而不是commenters.id)
其次,如果不能解决问题,请细分查询部分,以检查是否从注释中选择*,并加入用户,以检查与用户的链接。对帖子进行同样的操作..如果可行..让我知道,我们可以进一步查找问题出在哪里