查詢(inner join + count + group by)我想在包含博客文章列表的頁面上顯示每篇博文的評論數(以及類別,日期,作者等)。我如何在propel中編寫下面的mysql查詢?使用Propel
SELECT post.id, post.title, post.more_columns , COUNT(comments.post_id) AS numofcomments FROM post INNER JOIN comments ON post.id = comments.post_id GROUP BY post.id, post.title, post.more_columns
其中post是博客表和註釋,post_id作爲post.id的外鍵的註釋表。我似乎無法得到'numofcomments'作爲結果集中的列。目前我使用非ORM的方法(這將是我的最後一招):
$con = Propel::getConnection(PostPeer::DATABASE_NAME);
$sql = "SELECT post.* , COUNT(comments.post_id) AS numcomments FROM post INNER JOIN comments ON post.id = comments.post_id GROUP BY post.id";
$stmt = $con->prepare($sql);
$stmt->execute();
$result = PostPeer::populateObjects($stmt);
return $result;
我如何才能獲得「numofcomments」在所得到的結果集的Propel?
編輯:我想知道的是我如何在Propel中編寫上述查詢?我現在可以做的是在評論表上使用內部連接來獲取帖子表,然後在每個帖子ID的評論表上運行doCount。這將導致Post表和查詢表的許多查詢有1個查詢。我希望將sql查詢減少到最少。 謝謝:)
感謝@nos ...這是我的一個基本疏忽,沒有正確寫出分組查詢,但問題不同。我編輯它...你能再次檢查嗎? :) – fenderplayer 2009-08-04 13:38:32