如何在YII中使用3个表加入总计数?

时间:2016-10-16 17:21:23

标签: php mysql yii

我有3个mysql表(order,camp,user)作为下面的值,

order_table
ID    camp_id       orderDate       
1       1           2015-01-01
2       1           2015-02-01
3       2           2015-03-01
4       3           2015-01-01
5       4           2015-04-01
6       2           2015-01-01
7       4           2015-07-01

camp_table
camp_id uid     camp name
1       10             first camp
2       11             second camp
3       12             third camp
4       10             forth camp

user_table
uid    uname
10      abc
11      xyz
12      wrt

就像在上面的示例中一样,我希望在YII1中使用

计算user_table(uid 10)的order_table记录
$criteria = new CDbCriteria();

方法

或任何其他方法,但快速工作,因为 order_table

中有数百万条记录

我已经尝试了所有可以找到的选项,但没有一个适合我。

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

嗨试试这个:

$criteria->condition = 'ot.orderDate =:Date';
$criteria->join = 'INNER JOIN camp_table ct ON ot.camp_id =ct.camp_id
INNER JOIN user_table ut on ut.uid  = ct.uid';
$criteria->params = array(':Date'=>$date);
最好的问候。

答案 1 :(得分:0)

试试这个,这可能对你有所帮助 Yii标准:

$criteria = new CDbCriteria;
// $criteria->select    = '*';
$criteria->join      = 'INNER JOIN company ON order.company_id = company.id';
$criteria->join     .= 'INNER JOIN user ON company.user_id = user.id';
$criteria->condition = 'user.id=:id';
$criteria->params    = array(':id'=>10);

$customers = Order::model()->count($criteria);

Mysql查询:

SELECT count(*)
FROM `order`
INNER JOIN `company` ON `order`.`company_id` = `company`.`id`
INNER JOIN `user` ON `company`.`user_id` = `user`.`id`

WHERE `user`.`id` = 10;