2012-04-04 86 views
1

我想算從另一個表有多少條記錄在同一個SELECT語句中,我使用LEFT JOIN 並在select語句我把計數(AG。*) 看到 例:
COUNT(*)只返回一個記錄

$q = Doctrine_Query::create() 
      ->select("a.answer_id,a.date_added , count(ag.content_id) AS agree_count") 
      ->from('Answer a') 
      ->leftJoin("a.Agree ag ON a.answer_id = ag.content_id AND ag.content_type = 'answer' ") 
      ->where('a.question_id= ? ', $questionId) 

但它只是返回的第一條記錄,我可以修復嗎?或者製作另一張桌子並僅用於計數?

+0

您有固定'question_id' where子句。你確定有更多的行需要預期嗎? – Sirko 2012-04-04 14:51:16

+0

你希望輸出什麼?你是否希望agree_count屬性計算整個列表並且也位於每一行中? – Dan 2012-04-04 14:55:31

回答

5

你缺少你查詢GROUP BY

更多的相關信息here.

當你沒有GROUP BY子句,這是正常的得到的只有一行。

+0

感謝,現在的工作再 – KJA 2012-04-04 15:01:16

+0

肯定,謝謝 – KJA 2012-04-04 15:07:29

0

COUNT(*)將只返回一個記錄,如果你不使用分組依據。你要求它記錄所有的記錄,所以只能有一個結果。

0

計數()的SQL函數變化的結果是如何從數據庫返回 - 沒有GROUP BY數據庫將只在SELECT返回一個記錄,無論其他柱的側向承載力。

如果添加:

group by a.answer_id 

到您的SQL查詢的末尾,這可能DWYM。