簡體   English   中英

在Symfony 1.4 / Doctrine中沒有得到不同的查詢結果

[英]Not getting distinct query results in Symfony 1.4 / Doctrine

我的TurnoveroverVolumeTable類中有以下查詢:

$query = $this->createQuery('tv')
        ->addSelect('DISTINCT tv.debtor_number')
        ->addSelect('tv.debtor_name')
        ->addSelect('tv.country_description')
        ->addSelect('SUM(tv.turnover_ytd) as tv.turnover_ytd')
        ->addSelect('tv.currency_description')
        ->from('TurnoverVolume tv')
            ->innerJoin('tv.Agent a')
            ->andWhere('tv.debtor_number = a.debtor_number')
            ->andWhere('a.agent_number =?', $agent)
            ->andWhere('tv.period LIKE "' . $year .'%"')
            ->groupBy('tv.debtor_number');

在檢索和顯示數據時,我在動作類中使用了它:

$query = Doctrine_Core::getTable('TurnoverVolume')->getYearTurnover($agent_number, $this->currentYear);

$results = $query->execute();

        $turnover_data = array();
        foreach ($results as $turnover) {
            $turnover_result = array(
                'debtor_number' => $turnover['debtor_number'],
                'debtor_name' => $turnover['debtor_name'],
                'country_description' => $turnover['country_description'],
                'turnover_ytd' => $turnover['turnover_ytd'],
                'currency_description' => $turnover['currency_description']
            );
            $turnover_data[] = $turnover_result;
        }

我為turnover_ytd得到的結果是2703,但應該是277450,它只得到2011年的第一個結果,而不是2011年的總結果。

在Symfony的日志中,我有以下MySQL查詢:

SELECT DISTINCT t.company_number AS t__company_number, t.debtor_number AS t__debtor_number, t.period AS t__period, t.debtor_name AS t__debtor_name, t.country_description AS t__country_description, t.currency_description AS t__currency_description, SUM(t.turnover_ytd) AS t__0 FROM turnover_volume t INNER JOIN agent a ON t.debtor_number = a.debtor_number WHERE (t.debtor_number = a.debtor_number AND a.agent_number = '003' AND t.period LIKE "2011%") GROUP BY t.debtor_number

當我直接將其輸入到MySQL數據庫中時,可以得到正確的結果。

誰能向我解釋我可能做錯了什么?

這有幫助嗎?

DISTINCT必須大寫,因為必須使用,否則將使用fetchArray()而不是execute()返回所有內容,后者不起作用!

資源

暫無
暫無

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

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