mysql - cakephp 从排序且有限的行加入

标签 mysql sql cakephp

我有一个有效的 SQL 查询,我想知道 CakePHP 查询构建器相当于以完全相同的方式工作吗?

SELECT customers.*, customer_reps.created FROM customers
LEFT JOIN customer_reps ON customer_reps.id =
    (
    SELECT id FROM customer_reps WHERE customer_id = customers.id
    ORDER BY id ASC LIMIT 1
    )
WHERE created >= 1475298000
AND created <= 1476217836
AND agents_id = 4

所以本质上我是从“客户”中选择所有列,然后我只想要第一个“customer_reps”表的“创建”时间戳字段来匹配客户。

CakePHP 的文档似乎没有解释如何在 select 中进行选择以进行排序。我尝试使用“hasMany”关系内容,但我无法找到如何获取“第一个”customer_reps 条目以添加到主查询中以在 WHERE 子句中使用。

谢谢

最佳答案

尝试将此代码作为起点,您只需按 CustomerRep.customer_id 将其分组,因为如果您的 customer_reps 表 id 已自动递增,则顺序已经升序

    $this->Customer->find('all', array(
        'fields' => arrray(
            'Customer.*',
            'CustomerRep.created'
            ),
        'joins' => array(
             array(
                 'type' => 'LEFT',
                 'table' => 'customer_reps',
                 'alias' => 'CustomerRep',
                 'conditions' => 'Customer.id = CustomerRep.customer_id'
                )
            )
        'conditions' => array(
            'Customer.created >=' => '1475298000',
            'Customer.created <=' => '1476217836',
            'Customer.agentds_id' => 4
            ),
        'group' => 'CustomerRep.customer_id'
    ));

关于mysql - cakephp 从排序且有限的行加入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39986278/

相关文章:

mysql - MySQL中如何将一个表拆分为两个?

MYSQL:在多行选择中使用 COUNT 和 SUM 函数的问题

sql - Sequelize 嵌套急切加载查找所有嵌套关联不匹配的地方

mysql - 如何直接从 MySQL 解密 Cakephp3 加密数据?

mysql - 如何在不使用插入查询的情况下在 sql 中插入虚拟行?

mysql - 将数据从另一个表的一列插入到同一个表的多列中

mysql - cakePHP 3.0 预填充数据库 - 迁移

php - CakePHP 不输出正确的 CSS 路径

mysql - 无法使用数据库:create when I try to configure CartoDB

SQL LEFT 外部联接只有来自右侧的一些行?