#php #mysql #yii
#php #mysql #иии
Вопрос:
У меня есть 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
как и в приведенном выше примере, я хочу иметь количество записей order_table для user_table (uid 10) в YII1, используя
$criteria = new CDbCriteria();
метод.
или любой другой метод, но работающий быстро, так как в order_table есть миллион записей
я перепробовал все варианты, которые смог найти, но ни один из них мне не подходит.
Спасибо за помощь.
Комментарии:
1. пожалуйста, опишите, какие варианты вы пробовали.
Ответ №1:
Попробуйте это, это может вам помочь.
Критерии 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;
Ответ №2:
Попробуйте с этим:
$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);