gpt4 book ai didi

mysql - PDO GROUP BY 不返回结果

转载 作者:行者123 更新时间:2023-11-30 01:36:11 27 4
gpt4 key购买 nike

我很难获得我正在编写的 PDO 数据库类来很好地处理使用 GROUP BY 子句的查询。

例如,我想检索数据库中的文章列表,但这些文章使用多对多关系链接到标签。

即文章 > 文章标签链接 < 标签

我尝试运行的查询非常简单:

SELECT * FROM articles, article-tag-link, tags WHERE articles.articleID = article-tag-link.articleID AND tags.tagID = article-tag-link.tagID GROUP BY articles.articleID LIMIT 3;

我正在使用准备好的语句来使用 PDO 执行查询,并且我知道没有 GROUP BY 的简单查询可以完美地工作,因为它在其他地方使用时没有任何问题。

所以,当涉及到执行查询时,我正在做:

$result = $stmt->execute();
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);

这会返回我想要的结果,尽管它们没有正确分组。 IE。一篇可能有 3 个标签的文章将出现 3 次(因为技术上有 3 条记录满足查询 - 不包括 GROUP BY)。所以就好像 GROUP BY 被忽略了。

我遇到过

$results = $stmt->fetchAll(PDO::FETCH_ASSOC | PDO::FETCH_GROUP);
$results = array_map('reset', $results);

但这表现得同样奇怪。这将仅返回一个结果(它不会返回第一篇文章三次 - 每个应用的标签一次),但它将停止在一个结果 - 它不会继续获取另外两个结果。

谁能解释一下如何让它获取满足查询的三个唯一记录?

最佳答案

您可以使用INNER JOIN相反

试试这个

   SELECT * FROM articles a
INNER JOIN article-tag-link atl
ON a.articleID = atl.articleID
INNER JOIN tags t
ON t.tagID = atl.tagID
GROUP BY a.articleID
LIMIT 3;

试试这个

  $sth->fetchAll();

关于mysql - PDO GROUP BY 不返回结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16853871/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com