saebaryo, on 26 December 2010 - 05:14 AM, said:
kalo seperti code diatas, apa perlu didefinisikan terlebih dahulu ya, Total, jumlah, min dan maks nya.
soalnya ketika saya coba spt cara itu mesti ada pernyataan kalo field yg digunakan sebagai "as" itu bukan merupakan property salah satu tabel.
kalo saya baca di threadsebelah ada yg jawab spt ini
mohon petunjuk dari suhu2 sekalian, ane gak paham maksudnya.
menurut sy, tergantung arsitektur dbnya. biasanya untuk mysql butuh enclosed (
`) untuk menandai object dalam database. sehingga sql harusnya menjadi:
$sql="
SELECT
`A`.`id`,
sum(`B`.`price`) as `Total`,
count(`B`.`B_id`) as `jumlah`,
max(`B`.price) as `maks`,
min(`B`.`price`) as `Minimum`
FROM
`A` INNER JOIN `B` ON `A`.`ID`=`B`.`A_ID`
";
beda halnya denga sqlite, enclosed tidak diperlukan atau bahkan kadang dibutuhkan dengan quote (
")
untuk kasus ini solve dari zaccaria mungkin yang terbaik:
zaccaria, on 18 November 2010 - 02:31 AM, said:
You can achive with a bit of conditions:
$criteria= new CDbCriteria;
$criteria->select= ' SUM(`count`) as sum'; //perhatikan tanda (`) sebagai penanda fieldnya
$criteria->join= 'INNER JOIN `orders` USING(`idorders`)';
$criteria->condition='`customer_company`=1';
orderDetail::model()->findAll($criteria);
In orderDetail you have also to add a property sum, in wich you will get the result.
sehingga jika disesuaikan dengan kasus kita harusnya menjadi
$criteria= new CDbCriteria;
$criteria->select= '`A`.`id`,sum(`B`.`price`) as Total,count(`B`.`B_id`) as jumlah, max(`B`.`price`) as maks,min(`B`.`price`) as minimum';
$criteria->join= 'INNER JOIN `B` USING(`A_ID`)';
//$criteria->condition='`customer_company`=1'; //pada kasus kita tidak ada kondisi
A::model()->findAll($criteria);
atau jika Kamu telah mendefinisikan relations A ke B pada model A
public function relations()
{
return array(
'relKeB'=>array(selff::HAS_MANY, 'B', 'A_ID'),
);
}
kita dapat menggunakan attribut
with pada CDbCriteria
$criteria= new CDbCriteria;
$criteria->select= '`id`,sum(`price`) as Total,count(`B_id`) as jumlah, max(`price`) as maks,min(`price`) as minimum';
$criteria->with='relKeB';
A::model()->findAll($criteria);
semoga berhasil