Php 在类别中链接时显示所有博客文章的查询
因此,我有一个查询,在链接帖子类别和创建帖子的用户时,应该从表中获取所有帖子。不过我得到的只是一篇回复的帖子,而不是所有的帖子。以下是模式:Php 在类别中链接时显示所有博客文章的查询,php,mysql,sql,database,codeigniter,Php,Mysql,Sql,Database,Codeigniter,因此,我有一个查询,在链接帖子类别和创建帖子的用户时,应该从表中获取所有帖子。不过我得到的只是一篇回复的帖子,而不是所有的帖子。以下是模式: Posts ===== id Categories ========== id Post categories =============== postID categoryID 这是我到目前为止的SQL代码,有点深,但它将所有类别连接到一个字段中 SELECT blgpostcategories.*, blgcategories.i
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更新的查询-仍然只返回一行:-(
我一眼就能看出两件事: 1-执行
左外部联接
而不是右
右意味着“显示右表中的所有内容,无论左表中是否有匹配的内容。”如果您想要博客帖子中的所有内容,请执行左
2-您的内部连接也可能是一个问题。您确定用户
已完全填充吗
编辑:
问题是您使用的聚合函数没有分组依据
!取出分组依据()
,它应该可以正常工作。在Adam Robinson对类似问题的回答中
因为您在中使用了聚合
您的查询(分组),您的查询
正在分组。因为您没有
GROUPBY子句,您的组是
整个结果集(因此可以看到每个
作者使用的标签)。因为
MySQL允许使用非分组的
分组语句中的列,您可以
没有错误,但是你
没有得到你想要的查询
需要
为了找回正确的
结果,您需要对查询进行分组
在thread.id上
在您的情况下,只需按blgcategories添加组。id
应该这样做不确定,我认为这是一种方法。我应该尝试内部连接吗?我绝对肯定用户已被填充。我添加了一个答案。我想您需要左连接。请参阅我上面编辑的查询。对于此查询内容仍然感到非常不满意:-(@Nathan-如果你从博客帖子中选择一个SELECT*,
你得到了多少行?@JNK返回了2行…我想这与我的整个类别的合并等有关。嗯…@Nathan-请看我的编辑。当你使用没有分组依据的聚合时,你会得到有趣的结果。大多数数据库都不允许你这样做,但是MySQL是…@JNK我该如何获取每篇文章可以驻留的多个类别?我正在使用GROUP_CONCAT()获取一行中的所有类别,而不重复我的文章数据。这样做了!主要区别是我按blgposts.id进行了分组
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