如何解决查询以显示所有博客文章,同时链接类别
| 因此,我有一个查询,该查询应该在链接帖子类别和创建帖子的用户时从表中获取所有帖子。我得到的只是返回一个帖子,而不是所有帖子。以下是架构:Posts
=====
id
Categories
==========
id
Post categories
===============
postID
categoryID
这是到目前为止的SQL代码,虽然有点深,但是它会将所有类别连接到一个字段中。
SELECT
blgpostcategories.*,blgcategories.id,GROUP_CONCAT(blgcategories.name) AS categories,blgposts.*,users.firstName,users.id AS usersId,users.lastName,users.email
FROM blgposts
RIGHT OUTER JOIN blgpostcategories
ON blgposts.id = blgpostcategories.postID
RIGHT OUTER JOIN blgcategories
ON blgpostcategories.categoryID = blgcategories.id
INNER JOIN users
ON blgposts.userID = users.id
来自JNK的更新查询-仍然仅返回一行:-(
SELECT
blgpostcategories.*,blgposts.*
FROM blgposts
LEFT OUTER JOIN blgpostcategories
ON blgposts.id = blgpostcategories.postID
LEFT OUTER JOIN blgcategories
ON blgpostcategories.categoryID = blgcategories.id
解决方法
在亚当·罗宾逊(Adam Robinson)对类似问题的回答中
因为您正在使用汇总
您的查询(GROUP_CONCAT),您的查询
正在分组。既然你没有
group by子句,您的组是
整个结果集(因此可以看到每个
作者使用的标签)。因为
MySQL允许使用非分组
分组语句中的列,您
没有出错,但是你
没有得到您的查询
想。
为了找回合适的
结果,您需要对查询进行分组
在thread.id上。
在您的情况下,只需加上ѭ3即可,我马上看到了两件事:
1-做
LEFT OUTER JOIN
而不是RIGHT
。 RIGHT
表示\“向我显示右表中的所有内容,无论我是否在左表中有任何匹配项。\”您想要blogposts
中的所有内容,所以向左移。
2-您的INNER JOIN
也可能是个问题。您确定ѭ9已完全装满吗?
编辑:
问题是您正在使用没有GROUP BY
的聚合函数!取出GROUP_CONCAT()
,它应该可以正常工作。版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。