DQL 选择具有一列 MAX 值的每一行

2023-12-07

使用 Symfony 2 和 Doctrine,我正在寻找一种方法来选择特定列中具有最大值的每一行。

现在,我正在两个查询中执行此操作:

  • 一种获取表中列的最大值
  • 然后我选择具有该值的行。

我确信这可以通过一个查询来完成。

搜索中,我发现了这个答案 in a thread,这似乎就是我正在寻找的东西,但是是在 SQL 中。

因此,根据答案的第一个解决方案,我尝试构建的查询将类似于:

select yt.id, yt.rev, yt.contents
from YourTable yt
inner join(
    select id, max(rev) rev
    from YourTable
    group by id
) ss on yt.id = ss.id and yt.rev = ss.rev

有人知道如何在 Doctrine DQL 中实现它吗?

现在,这是我的测试代码(不起作用):

$qb2= $this->createQueryBuilder('ms')
            ->select('ms, MAX(m.periodeComptable) maxPeriode')
            ->where('ms.affaire = :affaire')
            ->setParameter('affaire', $affaire);

$qb = $this->createQueryBuilder('m')
            ->select('m')
            //->where('m.periodeComptable = maxPeriode')

            // This is what I thought was the most logical way of doing it:
            ->innerJoin('GAAffairesBundle:MontantMarche mm, MAX(mm.periodeComptable) maxPeriode', 'mm', 'WITH', 'm.periodeComptable = mm.maxPeriode')

            // This is a version trying with another query ($qb2) as subquery, which would be the better way of doing it for me,
            // as I am already using this subquery elsewhere
            //->innerJoin($qb2->getDQL(), 'sub', 'WITH', 'm.periodeComptable = sub.maxPeriode')

            // Another weird try mixing DQL and SQL logic :/
            //->innerJoin('SELECT MontantMarche mm, MAX(mm.periodeComptable) maxPeriode ON m.periodeComptable = mm.maxPeriode', 'sub')

            //->groupBy('m')
            ->andWhere('m.affaire = :affaire')
            ->setParameter('affaire', $affaire);

    return $qb->getQuery()->getResult();

实体是 GAAffairesBundle:MontantMarche,因此此代码位于相应存储库的方法中。

更一般地说,我正在学习如何处理高级查询的子查询(SQL 和 DQL)以及 DQL 语法。

Thx!


经过几个小时的头痛、谷歌搜索和 stackOverflow 阅读之后...... 我终于知道怎么做了。

这是我的最终 DQL queryBuilder 代码:

    $qb = $this->createQueryBuilder('a');
    $qb2= $this->createQueryBuilder('mss')
            ->select('MAX(mss.periodeComptable) maxPeriode')
            ->where('mss.affaire = a')
            ;

    $qb ->innerJoin('GAAffairesBundle:MontantMarche', 'm', 'WITH', $qb->expr()->eq( 'm.periodeComptable', '('.$qb2->getDQL().')' ))
        ->where('a = :affaire')
        ->setParameter('affaire', $affaire)
        ;

    return $qb->getQuery()->getResult();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

DQL 选择具有一列 MAX 值的每一行 的相关文章

  • Yii 使用 ajax 进行分页

    我需要使用ajax启用分页 我的代码 控制器 更新内容ajax function actionIndex dataProvider new CActiveDataProvider News array pagination gt array
  • FPDI/FPDF:水印和打印多页

    我修改了这个堆栈问题 当用户尝试下载文件时在 pdf 文件上应用水印 https stackoverflow com questions 3983432 applying watermarks on pdf files when users
  • Apache 访问 Linux 中的 NTFS 链接文件夹

    在 Debian jessie 中使用 Apache2 PHP 当我想在 Apache 的文档文件夹 var www 中创建一个新的小节时 我只需创建一个指向我的 php 文件所在的外部文件夹的链接 然后只需更改该文件夹的所有者和权限文件夹
  • 为 Symfony 指定备用后备路径以查找捆绑包的树枝模板

    基本问题 如何让 symfony 在非标准目录中查找 最佳 自定义 Twig 模板来加载捆绑视图 Symfony 文档说默认情况下它会在两个位置查找覆盖 Twig 模板 http symfony com doc current book t
  • 如何使用 php 发送服务器错误响应?

    一旦用户点击删除按钮我的 jQuery 脚本要求服务器删除所选项目 现在我想要我的php发送成功或错误响应的脚本 是否有可能触发错误回调万一该项目无法删除 Thanks 我的 jQuery 代码 ajax type post url myA
  • 扩展蓝图类?

    我想覆盖timestamps 函数中发现Blueprint班级 我怎样才能做到这一点 e g public function up Schema create users function Blueprint table table gt
  • 是否可以使用 PHP 重定向发送 POST 数据?

    更新 这不是重复的如何使用 PHP 发送 POST 请求 https stackoverflow com questions 5647461 how do i send a post request with php 那里的解决方案对我不起
  • SELECT max(x) 返回 null;我怎样才能让它返回0?

    运行以下命令时如何返回 0 而不是 null SELECT MAX X AS MaxX FROM tbl WHERE XID 1 假设没有XID 1的行 or SELECT coalesce MAX X 0 AS MaxX FROM tbl
  • preg_match_all 查询仅显示有问题的外部组

    我无法弄清楚如何只显示 preg 查询的外部组级别 我会给你一个例子 preg match all start end input matches 这个输入start1 start2 2end 1end产生这个输出start1 start2
  • 使用 SSL 证书验证 Web 浏览器

    是否可以使用 ssl 证书对 Web 浏览器进行身份验证 假设我在应用程序中存储私钥 有什么方法可以从浏览器读取密钥并尝试基于该私钥进行身份验证 您可以使用 SSL TLS 客户端证书身份验证来对浏览器 用户进行身份验证 服务器必须请求客户
  • PHP 在输入流中使用 fwrite 和 fread

    我正在寻找将 PHP 输入流的内容写入磁盘的最有效方法 而不使用授予 PHP 脚本的大量内存 例如 如果可以上传的最大文件大小为 1 GB 但 PHP 只有 32 MB 内存 define MAX FILE LEN 1073741824 1
  • 在 PHP 中撤销 Google 访问令牌

    正如标题所示 我想以编程方式撤销授予的访问令牌 即在 PHP 中 我发现这个他们的网站 https developers google com identity protocols OAuth2WebServer tokenrevoke 但
  • PHP 脚本可以在终端中运行,但不能在浏览器中运行

    我正在尝试执行exec命令 但我遇到了问题 当我运行以下代码时 当我通过浏览器运行它时它不起作用 但如果我把输出 str将其复制并粘贴到终端中 它工作得很好 造成这种情况的原因是什么 我该如何解决 目前我正在运行localhost php
  • 随机组合 MySQL 数据库中的两个单词

    我有一个包含名词和形容词的数据库 例如 id type word 1 noun apple 2 noun ball 3 adj clammy 4 noun keyboard 5 adj bloody ect 我想创建一个查询 它将抓取 10
  • PHP preg_filter 返回意外的长值

    尝试在 Woocommerce 中删除标签并过滤值 但无法以正确的格式获取它 有东西有腥味 我正在使用WC gt cart gt get cart subtotal 来检索该值 在此示例中 我的值是 2 429kr 原始返回值是 span
  • PHP 中只保留数组的前 N ​​个元素? [复制]

    这个问题在这里已经有答案了 有没有办法只保留数组的前 N 个 例如 10 个 元素 我知道有array pop 但是有没有更好 更优雅的方法呢 您可以使用array slice http php net array slice or arr
  • 使用 Ajax.Request 将 JSON 从浏览器传递到 PHP 的最佳方法

    您好 我有一个 JSON 对象 它是一个二维数组 我需要使用 Ajax Request 将其传递给 PHP 我知道的唯一方法 现在我使用js函数手动序列化我的数组 并获取以下格式的数据 s 1 d 3 4等 我的问题是 有没有办法更直接 有
  • SQL 最近日期

    我需要在 php 中获取诸如 2010 04 27 之类的日期作为字符串 并在表中找到最近的 5 个日期 表中的日期保存为日期类型 您可以使用DATEDIFF http dev mysql com doc refman 5 1 en dat
  • 表单计算器脚本基本价格未加载 OnLoad

    我的表单中有一个计算器来计算我的下拉选项选择 function select calculate on change calc input type checkbox calculate on click calc function cal
  • 如何部署“SQL Server Express + EF”应用程序

    这是我第一次部署使用 SQL Server Express 数据库的应用程序 我首先使用实体 框架模型来联系数据库 我使用 Install Shield 创建了一个安装向导来安装应用程序 这些是我在目标计算机中安装应用程序所执行的步骤 安装

随机推荐

  • 使用阈值检测对象

    我正在 matlab 中编写一个程序来检测图像序列中的对象 我试图检测的物体是一个红球 首先 我尝试使用阈值从图像中分割球 但我做不到 我无法摆脱球下的阴影 有什么想法如何去除球下的小部分吗 我的第二个问题是 我想确保我正在寻找的物体是一个
  • PHP 致命错误:未捕获异常“异常”并带有消息

    我有一个 PHP 脚本 它连接到 api 并将信息发布到他们的系统 但是当它尝试连接时 它会抛出致命错误 Fatal error Uncaught exception Exception with message Problem with
  • Laravel 环境变量 5.3 设置

    默认情况下 Laravel git 会忽略包含环境设置和配置的 env 文件 我想要一个本地 env 和一个可以提交到我的服务器的生产 env 这样我就不需要手动创建生产设置或触摸 env文件根本不存在 并且可以使用推送来部署技术 有人对此
  • 如何从视频文件的内容 URI 获取文件路径?

    我想附加 Android 存储中的图像或视频文件 当我从图库中选择视频时 它会返回内容 URI 路径 我如何获得文件路径带有内容 URI 的扩展名 我尝试了以下代码 但它在棒棒糖中返回 null void pickVideo Intent
  • 如何向 JScrollPane 添加水平/垂直滚动条

    我想向 JScrollPane 添加水平滚动条 因为我的表格现在如下所示 这是我创建表的代码 this table new JTable this table setShowGrid false this table getTableHea
  • 在 Rails 3 和 Rails 4.1 之间共享 Cookie

    我正在尝试在 Rails 3 和 Rails 4 1 应用程序之间共享 cookie 问题是 Rails 3 cookie 只是 base64 编码 但 Rails 4 1 cookie 是加密的 有没有办法让 Rails 3 和 Rail
  • Laravel 和 MS SQL Server 数据库连接抛出错误“(3/3) QueryException 找不到驱动程序”

    Guys I tried lots of things mentioned in Stackoverflow and laracasts for this issue but none worked hence posting this i
  • UPDATE 语句处于“查询结束状态”

    我们最近升级了在 mysql 服务器版本 5 5 8 上运行的 mysql 数据库 升级后 有时我们会看到简单的升级语句需要 10 秒以上 当我查看进程列表时 它显示所有进程都处于 查询结束 状态 有谁对此有任何想法吗 UPDATE Acc
  • Angular2中如何动态添加克隆节点(相当于cloneNode)

    在 Angular2 中 在某些情况下我需要复制节点而不是移动它 该节点具有 angular2 属性 因此 cloneNode 不起作用 我该怎么做 什么不起作用 let el
  • 将 BSTR 从 C++ DLL 函数传递到 VB6 应用程序

    我的 VB6 应用程序中有以下代码 Private Declare Function FileGetParentFolder Lib Z FileIO dll ByVal path As String As String Output Ad
  • 在 SVN 中创建包含内部版本号和分支名称的文件

    目前我工作的地方没有大量的部署控制 虽然有一个长期计划来创建一个处理部署的构建脚本 但目前我们只是发布我们的解决方案 然后将它们复制到服务器 如果有一个文本文件或类似的文件包含修订号和分支名称 作为实时系统上当前运行的版本的日志 这将非常有
  • Windows 中 sys/mman.h 的等效项

    我在尝试在 Win64 上编译 C 代码时遇到问题 更具体地说 编译器找不到sys mman hheader 据我所知只能在 Unix 环境中找到 我已经知道这是处理内存分配的 我可以使用 Windows 的等效工具来移植代码 第一次尝试
  • Swift 通用协议函数参数

    这似乎对我有用 我想做的就是让Rule协议能够performRule在任何采用该规则协议的结构上 然后返回一个布尔值 但是 按照我的代码当前的方式 我无法访问performRule value value范围 我觉得我错过了一个重要的概念或
  • 轮询 I/O (MIPS)

    我正在尝试在 MIPS 中编写一个程序 该程序使用轮询从键盘读取字符 然后使用内置键盘和显示器 MMIO 模拟器显示它 不幸的是 我无法理解所使用的寄存器和控制位背后的概念 但一直试图从在线示例中找出答案 这是我到目前为止所写的内容 dat
  • 使用套接字通过 Tcp/IP 发送消息

    我正在尝试在客户端 服务器之间发送数据 数据看起来像 typedef Struct Message int id int message length char message str message 我在尝试着Write and Read
  • 当用户滚动离开时如何暂停 YouTube 嵌入

    我一直在尝试寻求帮助 以便在用户滚动离开时让视频暂停 我已经能够找到 html5 视频的帮助 但现在我还需要知道如何使用 youtube API 来实现同样的目的 我嵌入 YouTube 的 html 结构如下 div class ytub
  • HTML5 画布图像上的插图阴影

    我以前见过这个问题 但给出的答案是针对通过路径绘制的画布图像 但是我正在绘制图像 是否有可能创建一个inset shadow context shadowOffsetX 0 context shadowOffsetY 0 context s
  • 如何在不移动其他元素的情况下放大div

    我怎样才能停止这个 div 将所有元素移动到您选择特定价格的位置下方 要了解我在说什么 请查看此链接 查看价格表样式3在其下方 您可以看到 当您选择某个价格表时 下面的所有元素都会因弹出而移动 我希望能够使用此功能 但当然不能移动下面的所有
  • 多个单通道矩阵转换为单个多通道矩阵

    我正在使用带有矩阵的 opencv c api 我有 4 个单通道 Mat 我想将其合并为一个 4 通道矩阵 它基本上是我在 4 个矩阵中拥有的 rgba 通道 并且想要组合成一个 rgba 图像 矩阵 谁知道该怎么做 您可以使用简历 合并
  • DQL 选择具有一列 MAX 值的每一行

    使用 Symfony 2 和 Doctrine 我正在寻找一种方法来选择特定列中具有最大值的每一行 现在 我正在两个查询中执行此操作 一种获取表中列的最大值 然后我选择具有该值的行 我确信这可以通过一个查询来完成 搜索中 我发现了这个答案