如何创建使用子查询的联接?

2023-12-04

如何将以下 SQL 查询转换为 CakePhp 查找查询?

SELECT
    a.id, a.rev, a.contents
FROM
    YourTable a
INNER JOIN (
    SELECT
        id, MAX(rev) rev
    FROM
        YourTable
    GROUP BY
        id
) b ON a.id = b.id AND a.rev = b.rev

我已经尝试过下面的代码:

return $model->find('all', [
    'fields' => $fields,
    'joins' => [
        [
            'table' => $model->useTable,
            'fields' => ['id','MAX(rev) as rev'],
            'alias' => 'max_rev_table',
            'type' => 'INNER',
            'group' => ['id'],
            'conditions' => [
                $model->name.'.id= max_rev_table.id',
                $model->name.'.rev = max_rev_table.rev'
            ]
        ]
    ],
    'conditions' => [
        $model->name.'.emp_id' => $empId
    ]
]);

但似乎在生成的SQL中,joins不包括在内。所以我不明白max(rev)我只需要获取行max(rev).

我尝试过重新排列里面的物品joins但仍然会产生相同的自动生成的 SQL。

你能帮我么?


没有fields or group连接选项,唯一的选项是table, alias, type, and conditions.

如果你想加入子查询,那么你需要显式生成一个:

$ds = $model->getDataSource();
$subquery = $ds->buildStatement(
    array(
        'fields' => array('MaxRev.id', 'MAX(rev) as rev'),
        'table'  => $ds->fullTableName($model),
        'alias'  => 'MaxRev',
        'group'  => array('MaxRev.id')
    ),
    $model
);

并将其传递给连接table option:

'table' => "($subquery)"

See also

  • Cookbook > 模型 > 关联:将模型链接在一起 > 连接表
  • Cookbook > 模型 > 检索数据 > 子查询
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何创建使用子查询的联接? 的相关文章

随机推荐

  • Java游戏中的碰撞检测?

    我正在开发一款游戏 其中存在运动图像碰撞检测的问题 游戏有一艘宇宙飞船和一些小行星 障碍物 我想检测它们之间的碰撞 我怎样才能做到这一点 对于矩形以外的任何物体 碰撞检测通常都很棘手 我过去这样做的方法是为每个对象提供图像和蒙版 例如 像木
  • 在 ffmpeg 中采样精确的音频切片?

    我需要将 wav 格式的音频文件切成 10 秒的块 这些块必须正好是 10 秒 而不是 10 04799988232 秒 我当前使用的代码是 ffmpeg i test wav ss 0 to 10 c a libfdk aac b a 8
  • Python BeautifulSoup 不抓取这个 url

    我试图从网址中抓取一些玩家数据 tr 行 但是当我运行代码时似乎没有任何反应 我确信我的代码很好 因为它可以与其他包含表格的统计网站一起使用 谁能告诉我为什么什么都没有发生 提前致谢 import urllib import urllib
  • 如何使用ExecuteScript(以python作为脚本引擎)进行数字加法练习? 【尝试学习NiFi的新手用户】

    我对 NiFi 比较陌生 不知道如何正确执行以下操作 我想用ExecuteScript处理器 脚本引擎 python 执行以下操作 请仅在 python 中 1 有一个包含以下信息的CSV文件 第一行是标题 first second thi
  • IE 9 的 onhashchange

    我有以下代码 document ready function if onhashchange in window alert The browser supports the hashchange event function test a
  • 将 WPF TextBlock 绑定到文本文件

    如何将 WPF TextBlock 绑定到文本文件 我想让 TextBlock 显示文件的内容 您需要将文件读入内存中的字符串并绑定到该字符串 查看型号 class ViewModel public string FileText get
  • 为什么正则表达式捕获组索引为 1?

    我的一部分担心这个问题会被结束 但我确实对某些事情感到困惑 在我使用的每种语言的正则表达式中 捕获组的索引为 1 即使该语言的其余部分索引为 0 我想到了会导致 1 索引的设计决策 这通常是为了降低非技术人员的进入门槛 但是当涉及到正则表达
  • x86、x32 和 x64 架构之间的区别?

    请解释一下两者的区别x86 x32 and x64 说到这里有点令人困惑x86 and x32因为大多数时候 32 位程序在 x86 上运行 Hans 和 DarkDust 的回答涵盖了 i386 i686 和 amd64 x86 64 因
  • 如何获取div之外的文本?

    div class amlocator store information div class amlocator title The Better Health Store div 2420 E Stadium Ann Arbor MI
  • 不同线程中的 HttpContext.Current.Items

    使用 HttpContext Current Items 我们可以访问当前请求中的变量 我的问题是 如果请求移动到不同的线程 我们仍然可以访问它吗 如果是 我们如何访问它 我认为它会抛出空引用异常 我正在尝试使用下面的代码 但它抛出空引用异
  • DataGridView - 如何使复选框充当单选按钮?

    我有一个 Windows 窗体应用程序 它显示一个对象列表数据网格视图 该控件将布尔值呈现为复选框 对象属性中有一组互斥的三个复选框 至多其中一项可能是正确的 因此 我希望复选框就像一组单选按钮一样 老家伙的一句旁白 我认为现在的人们甚至不
  • 自定义 UILocalNotification 重复间隔

    有没有办法指定 UILocalNotification 应该在哪几天触发 我希望能够设置不同的日期 比如说 仅在周一 周二和周日触发本地通知 有没有办法做到这一点 非常感谢 更新 也许我可以为每一天设置多个本地通知 并给每个通知一个 NSW
  • 如何从清单类路径条目中获取 jar

    我有一个可运行的 jar 其清单文件的类路径条目中有两个 jar Class Path module1 0 0 1 SNAPSHOT jar base 0 0 1 SNAPSHOT jar Main Class test MySPI 程序运
  • ggplot2 color - 当指定“红色”时显示不同的颜色

    我试图了解 ggplot2 如何处理颜色的美学 下面显示的两个 ggplot 命令显示不同的颜色 第二个命令显示较浅的颜色 并另外打印图例 如果有人能阐明这个概念 我将不胜感激 data iris 1st command ggplot ir
  • 如何从函数返回新数据作为参考,而不会出现借用检查器问题?

    我正在编写一个函数 它接受一个整数的引用并返回该整数乘以 2 5 倍的向量 我认为这看起来像 fn foo x i64 gt Vec lt i64 gt let mut v vec for i in 0 5 let q x 2 v push
  • MATLAB中生成一定范围内的随机数

    如何在 MATLAB 中生成 13 到 20 之间的随机数 如果您正在寻找均匀分布的伪随机整数 请使用 randi 13 20
  • 为什么我的 React propTypes Jest 测试在使用多个不可接受的 prop 值时会中断?

    In 另一个SO问题的答案关于如何测试propTypes在 React using Jest 中 我提出了一个模拟的解决方案console error 其他人以前做过但我认为可以改进的事情 我的解决方案 一个函数 如下 下面的示例代码包含一
  • 如何在 Django 中使用 css 和 javascript 的静态文件夹?

    我是 django 框架的新手 我创建了简单的欢迎页面 现在我想在我的项目中包含 css 文件 我无法在项目中应用 css 文件 我收到类似 NetworkError 404 NOT 的错误 找到 static css hai css th
  • 更改内部 Android 模拟器的时间

    我正在创建一个 Android 应用程序 该应用程序广泛使用 Android 中的时间和日期功能 包括 AlarmManager 的许多用途 但对于测试来说 仅仅为了测试某些功能而更改 Windows 系统时钟是一件很痛苦的事情 有没有办法
  • 如何创建使用子查询的联接?

    如何将以下 SQL 查询转换为 CakePhp 查找查询 SELECT a id a rev a contents FROM YourTable a INNER JOIN SELECT id MAX rev rev FROM YourTab