簡體   English   中英

PDO GROUP BY未返回結果

[英]PDO GROUP BY not returning results

我很難獲得我正在編寫的PDO數據庫類,以便與我們GROUP BY子句的查詢很好地配合使用。

例如,我想檢索數據庫中的文章列表,但是文章使用多對多關系鏈接到標簽。

即文章> article-tag-link <標簽

我要運行的查詢非常簡單:

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);

這將返回我想要的結果,盡管它們沒有正確分組。 也就是說,一篇可能具有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();

你特別的現場表演

SELECT articles.articleID 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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM