【问题标题】:CakePHP Database Query Count(Case When)CakePHP 数据库查询计数(Case When)
【发布时间】:2015-02-23 08:43:31
【问题描述】:

我正在使用 CakePHP,但似乎无法翻译我在工作台上所做的这个 SQL 查询。这正是我想做的,但我似乎无法让它发挥作用。

这是我在 MySQL 上的查询:

select
    docs.id, docs.schoolId, schools.name, docs.datesubmitted, docs.status,
    uploads.iddocs,
    COUNT(*),
    COUNT(case uploads.staff_checked when 1 then 1 else null end)
FROM
    docs as docs, schools as schools,
    uploads as uploads
where
    docs.schoolId = schools.schoolId AND
    docs.id = uploads.iddocs AND
    docs.status ="Submitted"
group by
    docs.id;

我需要做的是合并三个表:Docs、Schools 和 Uploads。

这两个计数:COUNT(case when)COUNT(*) 表示已审核的文档数量 (COUNT(case when)) 和需要审核的文档总数 (COUNT(*))。

到目前为止,MySQL 正在展示我所需要的。有人可以弄清楚如何在 Cake 中做到这一点吗?

【问题讨论】:

    标签: mysql database cakephp count


    【解决方案1】:

    试试下面的查询

    $this->virtualFields = array(
        'count_case_uploads_staff_checked_when_1_then_1_else_null_end' => 'COUNT(case uploads.staff_checked when 1 then 1 else null end)',
        'count' => 'COUNT(*)',
    );
    $options = array(
        'fields' => array(
            'Doc.id',
            'Doc.schoolId',
            'schools.name',
            'Doc.datesubmitted',
            'Doc.status',
            'uploads.iddocs',
            'Doc.count_case_uploads_staff_checked_when_1_then_1_else_null_end',
            'Doc.count',
        ),
        'joins' => array(
    
            array(
            ),
        ),
        'conditions' => array(
            'Doc.schoolId = schools.schoolId',
            'Doc.id = uploads.iddocs',
            'Doc.status' => 'Submitted',
        ),
        'group' => array(
            'Doc.id',
        ),
    );
    $data = $this->find('all', $options);
    

    【讨论】:

      猜你喜欢
      • 2022-09-27
      • 1970-01-01
      • 2017-05-30
      • 2014-11-29
      • 2017-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多