SQL查詢鑑於如下圖:幫助,Yii中
有了下面的代碼,我已經爲每個組織分組的捐贈我現在想計算總金額定成員已經捐贈給一個特定的組織。
喜歡的東西:
有了這個代碼是正確的羣體,因爲我需要一個組織,但這個問題我這裏是列在「捐贈給組織金額」的所有值等於總的最高身份的組織。因此,在該列中的所有行顯示$ 90
的Yii代碼:
// member view
<?php
$dataProvider=new CActiveDataProvider(Donation::model(), array(
'criteria'=>array(
'with' => array(
'member' => array(
'on'=>'member.MemberId='.$model->MemberId,
'group' => 't.MemberId, t.OrganizationId',
'joinType'=>'INNER JOIN',
),
),
'together'=> true,
),
));
$this->widget('zii.widgets.grid.CGridView', array(
'dataProvider'=>$dataProvider,
'columns' => array(
array(
'name'=>'OrganizationId',
'value' => '$data->OrganizationId',
),
array(
'name'=>'Amount',
'value' => '$data->memberOrgBalance;',
),
),
));
?>
// member model
'memberOrgBalance' => array(self::STAT, 'Donation', 'MemberId',
'select'=>'MemberId, OrganizationId, SUM(Amount)',
'group' => 'OrganizationId'),
// donation model
'member' => array(self::BELONGS_TO, 'Member', 'MemberId'),
編輯:參見響應LDG
從LDG使用建議我嘗試添加 '具有' 到我的數據提供者,當這似乎沒有影響查詢時,我試圖將其添加到關係memberOrgBalance,我試圖拉數據。這似乎會影響查詢,但它仍然不正確。我切換到:
'memberOrgBalance' => array(self::STAT, 'Donation', 'MemberId',
'select'=>'MemberId, OrganizationId, SUM(Amount)',
'group' => 'OrganizationId',
'having'=> 'MemberId=member.MemberId',
),
這給這個錯誤:
CDbCommand failed to execute the SQL statement: SQLSTATE[42S22]:
Column not found: 1054 Unknown column 'member.MemberId' in 'having clause'.
The SQL statement executed was: SELECT `MemberId ` AS `c`, MemberId, OrganizationId,
SUM(Amount) AS `s` FROM `donation` `t` WHERE (`t`.`MemberId `='2')
GROUP BY `MemberId `, OrganizationId HAVING (MemberId=member.MemberId)
這是沒有意義的,因爲從捐贈表我已經定義的關係如上最初發布。儘管如此,查詢似乎成爲每個組織獲得SUM所需的方向。任何其他想法?
是的,對不起,如果它不是更清楚 - 這就是我想說的 - 這個查詢幾乎與你發佈錯誤的輸出相同,而不是「有」聲明。真高興你做到了。 – ldg