查询以显示所有博客文章,同时链接类别

| 因此,我有一个查询,该查询应该在链接帖子类别和创建帖子的用户时从表中获取所有帖子。我得到的只是返回一个帖子,而不是所有帖子。以下是架构:
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.*,
  blgcategories.id,
  GROUP_CONCAT(blgcategories.name) AS categories,
  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()
,它应该可以正常工作。

要回复问题请先登录注册