【问题标题】:How to get total count using 3 tables with join in YII?如何在 YII 中使用 3 个连接表来获取总数?
【发布时间】:2017-02-25 15:45:09
【问题描述】:

我有 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

中有数百万条记录

我已经尝试了所有我能找到的选项,但没有一个对我有用。

感谢您的帮助。

【问题讨论】:

  • 请描述您尝试过的选项。

标签: php mysql yii


【解决方案1】:

试试这个:

$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);

【讨论】:

    【解决方案2】:

    试试这个,这可能对你有帮助。
    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;
    

    【讨论】:

      猜你喜欢
      • 2015-05-22
      • 1970-01-01
      • 2021-04-01
      • 2019-08-03
      • 2019-04-03
      • 1970-01-01
      • 2021-12-09
      • 2014-07-10
      • 1970-01-01
      相关资源
      最近更新 更多