我有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
中有数百万条记录我已经尝试了所有可以找到的选项,但没有一个适合我。
感谢您的帮助。
答案 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;