【发布时间】:2014-12-18 19:46:01
【问题描述】:
如果您可以想象一个评论线程,则此查询用于下拉 cmets 和回复。问题是我需要包含一个右连接来包含 cmets(这些在回复列中有空列值)。问题是它正在拉下所有评论行,正如您从这张图片中看到的那样。为什么我的 pageId、classId、albumId 过滤器无法正确过滤?
SELECT rp.votes, cmts.pageId, cmts.content_element_id, rp.userId as replyUserId, (select users.firstName from users where users.guid = rp.userId) as replyFirstName,
(select users.lastName from users where users.guid = rp.userId) as replyLastName, rp.originalCommentId as replyOriginalCommentId,
rp.parentCommentId as replyParentCommentId, rp.commentId as replyCommentId, rp.text as replyText, rp.createdAt as replyCreatedAt,
rp.updatedAt as replyUpdatedAt, rp.status as replyStatus, cmts.classId as classId, cmts.albumId as albumId,
cmts.text as OriginalCommentText, cmts.status as CommentStatus, cmts.commentId as commentOriginalId,
cmts.createdAt as CommentCreatedAt, cmts.updatedAt as CommentUpdatedAt, cmts.status as cmtsStatus, cmts.userId as cmtsUserId, (select users.firstName from users where users.guid = cmts.userId) as commentFirstName, (select users.lastName from users where users.guid = cmts.userId) as commentLastName
FROM replies as rp
RIGHT JOIN comments as cmts ON rp.pageId = '36365094-0f52-49e3-bc0e-037edcca574b'
AND cmts.classId = '207'
AND cmts.albumId = '49152e6b-ca80-4889-a65e-4e6fd1dcc367'
AND rp.originalCommentId = cmts.commentId
ORDER BY cmts.createdAt
http://i59.tinypic.com/257q6wg.jpg
我无法进行内部连接,因为它不会返回图片中显示的空值。
@Gordon - 我想我需要一个额外的,就像这样:我现在正在仔细检查它。
RIGHT JOIN comments cmts ON rp.pageId = '36365094-0f52-49e3-bc0e-037edcca574b'
AND rp.originalCommentId = cmts.commentId
WHERE cmts.classId = '207' AND cmts.albumId = '49152e6b-ca80-4889-a65e-4e6fd1dcc367' AND cmts.pageId = '36365094-0f52-49e3-bc0e-037edcca574b'
ORDER BY cmts.createdAt
【问题讨论】:
-
因为它们不是过滤器。
RIGHT JOIN不会过滤任何记录,只提供匹配或不匹配。如果您希望它们成为过滤器,请使用INNER JOIN
标签: mysql