Doctrine 查询语言获取每组的最大/最新行

2023-11-21

我正在尝试将相对简单的 SQL 语句转换为可在 Doctrine 中运行的语句,但失败了。

这是 SQL 语句,它在针对我的数据库运行时按要求工作:

SELECT a.*
 FROM score a
 INNER JOIN (
  SELECT name, MAX(score) AS highest
  FROM score
  GROUP BY name
 ) b
 ON a.score = b.highest AND a.name = b.name
 GROUP BY name
 ORDER BY b.highest DESC, a.dateCreated DESC

这是迄今为止的 DQL 尝试:

$kb = $em->createQuery(
    "SELECT a 
    FROM ShmupBundle:Score a
    INNER JOIN a.name ShmupBundle:Score b WITH a.score = b.score AND a.name = b.name GROUP BY b.name
    WHERE a.platform='keyboard'
    GROUP BY a.name
    ORDER BY b.score DESC, a.dateCreated DESC"
);

目前正在给出此错误:

[Semantical Error] line 0, col 73 near 'ShmupBundle:Score': Error: Class ShmupBundle\Entity\Score has no association named name

该表本身非常简单: id、名称、分数、平台、创建日期

有多个条目具有相同的名称,但分数不同。我只想显示每个名字的“高分”。我已经试穿了一两天了,但没有成功。有人能指出我正确的方向吗?


您尝试对学说执行的查询与每组最大n个。使用子查询然后与主查询连接会使处理原则变得复杂。因此,下面是重写的 SQL 版本,可以在不使用任何聚合函数的情况下获得相同的结果:

SELECT 
  a.* 
FROM
  score a 
  LEFT JOIN score b 
    ON a.name = b.name 
    AND a.score < b.score 
WHERE b.score IS NULL 
ORDER BY a.score DESC 

DEMO

将上述查询转换为等同于原则或 DQL 很容易,下面是上述 SQL 的 DQL 版本:

SELECT a 
FROM AppBundle\Entity\Score a
    LEFT JOIN AppBundle\Entity\Score b 
    WITH a.name = b.name 
    AND a.score < b.score
WHERE b.score IS NULL
ORDER BY a.score DESC

或者使用查询生成器,您可以使用 symfony 2.8 编写类似我在下面测试过的内容演示模式

$DM   = $this->get( 'Doctrine' )->getManager();
$repo = $DM->getRepository( 'AppBundle\Entity\Score' );
$results = $repo->createQueryBuilder( 'a' )
                ->select( 'a' )
                ->leftJoin(
                    'AppBundle\Entity\Score',
                    'b',
                    'WITH',
                    'a.name = b.name AND a.score < b.score'
                )
                ->where( 'b.score IS NULL' )
                ->orderBy( 'a.score','DESC' )
                ->getQuery()
                ->getResult();

另一个想法是使用数据库中的查询创建一个视图,并在 symfony 中创建一个实体,将视图名称放入表注释中,然后开始调用您的实体,它将给出查询返回的结果,但不建议使用这种方法,只是临时修复。

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

Doctrine 查询语言获取每组的最大/最新行 的相关文章

  • mysql utf8_general_ci 区分大小写

    我有一个 mysql 数据库 我使用 utf8 general ci 不区分大小写 在我的表中 我有一些列 例如 ID 和区分大小写的数据 例如 iSZ6fX 或 AscSc2 为了区分大写和小写 最好只在这些列上设置 utf8 bin 如
  • CakePHP 控制器的实际测试?

    我正在使用 SimpleTest 1 0 1 用 CakePHP 刚刚发布的 1 2 4 编写一个新应用程序 我已经阅读了相关章节Cookbook http book cakephp org view 366 Testing control
  • ios-使用 firebase 发送通知

    我正在尝试创建带有通知的应用程序 通知必须从 php 文件发送到 firebase 然后发送到设备 起初 我尝试使用 firebase 控制台发送 效果完美 但是当我尝试使用 php 发送通知时 我遇到了问题 显示已成功发送 但我没有收到任
  • CodeIgniter“找不到您请求的页面。”错误?

    我在使用 CodeIgniter 时遇到问题 我已经检查了互联网上所有可能的解决方案 似乎对我的情况没有任何帮助 我不是一个大专业人士 这是我第一次使用 CodeIgniter 所以不要对我严厉 路线 php route default c
  • 用于提取 FDF 数据的 PHP 正则表达式代码

    我正在尝试使用 PHP 和正则表达式解析 FDF 文件 但我就是无法理解正则表达式 我一直在解析文件以生成数组 FDF 1 2 1 0 obj lt lt FDF lt lt Fields lt lt V email protected c
  • 在奏鸣曲管理列表顶部显示订单总数

    根据特定条件进行筛选后 在页面顶部显示销售交易金额总额 如果页面不止一页 这应该是所有页面的总和 有人可以指导我如何做到这一点 我们按照以下方式做到了 效果非常好 Step 1 orderAdmin中添加了两个方法 public funct
  • PHP:将“’”字符从 ISO-8859-1 转换为 UTF-8 时出现问题

    我在使用 PHP 将 ISO 8859 1 数据库内容转换为 UTF 8 时遇到一些问题 我正在运行以下代码来测试 Connect to a latin1 charset database and retrieve Georgia O Ke
  • 我不小心锁定了 MySQL 的 root

    我在 OS X 上使用 MySQL 并使用删除了所有 root 用户DROP USER 然后我又添加了其中一些并做了GRANT ALL on to root localhost 然后在验证确实是的之后注销 我可以登录并执行一些特权操作 不幸
  • PHP exec() 返回值是什么?

    我正在尝试使用 PHP exec 函数 如果 return var 参数与输出参数一起存在 那么执行命令的返回状态将被写入此 多变的 如果执行成功 则为 0 但是 如果出现错误 则可能是多个其他整数 我似乎无法在任何地方找到这些整数对应的内
  • 浏览器关闭后从数据库中删除

    我正在开发一个电子商务应用程序 但问题是 当用户将产品添加到购物车并在订购前关闭浏览器时 购物车会带走所有产品 所有购物车项目都保存在表中 如果用户关闭浏览器而不订购 我只想刷新购物车 您可以使用 Javascript 事件捕获浏览器关闭并
  • 通过 Laravel 框架集成现有项目?

    我已经从 github 克隆了一个项目 现在我需要集成该项目 那么如何使用 laravel 框架 我是否需要创建一个新项目然后需要替换文件夹 或任何其他替代方案 因为我是这个框架的新手 帮助我 这是一个广泛的问题 因为这取决于您的项目 而我
  • 在 MySql 中查找周年纪念日是否在 n 天后到来

    我有一张写有周年纪念日的桌子 我想要一个查询 该查询返回接下来 10 天内即将到来的周年纪念日行 例如 birthdate 1965 10 10 1982 05 25 SELECT birthdate FROM Anniversaries
  • 如何使用存储过程 SQL SERVER 2008 R2(mssql) 插入 PHP 数组值

    我有这个数组 REV Array 0 gt 240 1 gt 241 2 gt 242 3 gt 243 4 gt 249 我现在使用下面的代码进行插入 将每个数组的元素存储在带有 id userID Type 和 Date 的行中 if
  • 有没有办法将应用程序上下文与非 Sybase DB 服务器中的数据库连接进行通信(类似于 Sybase 中的 set_appcontext)?

    Sybase 有一种让应用程序进行通信的方法 上下文 数据 http manuals sybase com onlinebooks group as asg1250e sag Generic BookTextView 38861 hf 0
  • PDO 和 Microsoft SQL:必须声明表变量“@P1”

    我正在尝试使用 PDO 中的绑定从 Microsoft SQL 数据库中选择一些条目 我正在使用的代码看起来与我在文档中找到的代码类似 但是 当我运行它时 我收到以下警告 警告 PDOStatement execute pdostateme
  • 重新排列mysql中的主键

    从MySQL表中删除一些行后如何重新排列主键列值 例如 一个包含 4 行数据的表 主键值为 1 2 3 4 当删除第2行和第3行时 第4行的键值变为2 请帮助我找到解决方案 为什么要这样做 你不需要重新排列您的密钥 因为它只是记录的数字和标
  • 当错误较多时,Laravel 不会显示错误。这是 Bug?

    重复的https github com laravel framework issues 31123 https github com laravel framework issues 31123 Laravel 版本 6 8 0 6 10
  • 保存用户的身高和体重

    我应该如何将用户的身高和体重存储在MySQL数据库中 以便我可以使用这些信息来查找特定身高或体重内的用户 另外 我需要能够以英制或公制显示此信息 我的想法是存储以厘米为单位的身高和以公斤为单位的体重信息 我更喜欢公制而不是英制 我什至可以让
  • MySQL 命令输出在命令行客户端中太宽[重复]

    这个问题在这里已经有答案了 我在用mysql终端模拟器中的命令行客户端lxterminal在Ubuntu中 当我运行以下命令时 mysql gt select from routines where routine name simplep
  • 在php中获取二进制数据大小的正确方法是什么?

    我已阅读文件的一部分 现在想确保该部分的大小正确 我怎样才能在 php 中做到这一点 part fread file 1024 return some function part 1024 我已经阅读了这些示例 但我怀疑是否要使用 strl

随机推荐

  • Flux 未在 Spring 5 Reactor 中订阅

    我可能错过了一些东西 但我不知道它是什么 下面的代码什么也不做 webClient get uri some path here retrieve bodyToMono GetLocationsResponse class doOnNext
  • 如何获取充当 stdin/stdout 的文件的名称?

    我遇到以下问题 我想用 Fortran90 编写一个程序 我希望能够像这样调用 program x lt main in gt main out 除了 main out 我可以在调用程序时设置其名称 之外 还必须编写辅助输出 我希望它们具有
  • java rmi中的通信安全吗?

    java rmi 中客户端和服务器之间的通信是否安全 即默认加密 编码 是的 加密的 没有 JERI for JINI 提供基于 SSL IIRC 的 JRMP RMI 协议 JSR 76 本来可以提供 RMI 安全性 但它是有争议的被否决
  • 在不知道急救人员的情况下隐藏 iPhone 上的输入键盘?

    我见过这个问题 但问题是如何知道哪个textView是第一响应者 这个问题看起来很有希望找出第一响应者 但事实证明它调用了私有 API 有没有办法隐藏键盘或找出第一响应者作为拥有键盘的人 这很容易 UIApplication sharedA
  • 向 VB.Net 应用程序添加命令行参数

    我有一个由另一位程序员制作的基于 Windows 窗体的应用程序 我需要向其添加一些命令行开关primary output exe这样我就可以传递如下参数 program exe reinitialise or program exe sy
  • Django ImageField 验证(是否足够)?

    我有很多用户上传的内容 我想验证上传的图像文件实际上不是恶意脚本 在 Django 文档中 它指出 ImageField 继承 FileField 的所有属性和方法 但也验证上传的对象是有效的图像 这完全准确吗 我读到压缩或以其他方式操作图
  • Verilog 显示中不必要的空间

    我正在尝试以十进制显示一些 32 位值 除了 b 和前一个字符之间有奇怪数量的不必要的空格外 这工作正常 例如 如果我有一个 32 位 reg a 其十进制值为 33 我将使用类似的东西 initial begin display a d
  • GetMaxAmplitude 的值范围

    我有一个有趣的想法 可以在 Android 手机上开箱即用地使用麦克风端口 我正在集思广益如何使用 Android 手机记录咖啡烘焙机内的烘焙温度 这个想法突然出现在我的脑海中 麦克风是低压的 我的热电偶也是低压的 所以我开始研究 andr
  • 如何将图像视图从一个活动发送到另一个活动

    我在第一个活动的列表视图中有一个图像视图 我想通过单击列表视图项目将我的图像视图发送到第二个活动 我尝试过以下代码 将可绘制图像转换为字节数组 Bitmap bmp BitmapFactory decodeResource getResou
  • 在 VSTS 构建和发布中排除/跳过文件

    我们正在为 VSTS CI CD 创建架构 以将我们的 Web 应用程序部署到 Azure 应用服务 我们希望在将 web config 部署到 Azure 服务器时排除它 因为我们直接修改不同环境中的 web config CI 任务如下
  • Seaborn 混淆矩阵(热图)2 种配色方案(正确的对角线与错误的其余部分)

    背景 在混淆矩阵中 对角线表示预测标签与正确标签匹配的情况 所以对角线是好的 而所有其他单元格都是坏的 为了向非专家阐明 CM 的优点和缺点 我想为对角线赋予与其他部分不同的颜色 我想通过以下方式实现这一目标Python 和 Seaborn
  • Android 版 OpenCV - 访问 Mat 的元素

    在 OpenCV4Android 中访问和修改 Mat 的各个元素的标准方法是什么 另外 BGR 我认为这是默认值 和灰度的数据格式是什么 编辑 让我们更具体一些 mat get row col 返回一个双精度数组 这个数组里有什么 如果您
  • 构建设置中缺少 Xcode 12 beta 有效架构

    Hi I m using Xcode Version 12 0 beta 3 12A8169g Valid architectures in build settings is missing Does anybody know how t
  • 在 Guice 中管理同一依赖树的多个版本的最佳模式是什么?

    我想实例化同一类型依赖树 链的多个版本 它们对该树 链中的某些接口使用不同的实现 在这种情况下使用的最佳 Guice 实践 模式是什么 这是我的问题的具体示例 我有一个Writer接口可能是文件编写器或标准输出编写器 它将位于我的依赖关系层
  • 在清理之前修改传入django表单的数据

    我需要修改传入的数据Form清洁前 我成功了 但看起来很糟糕 def init self args kwargs if len args gt 0 data args 0 elif data in kwargs data kwargs da
  • 如何在gcc中编译带有头文件的C程序?

    我想在 gcc 中编译一个 C 程序 它有我的 2 个头文件 我正在使用命令 gcc UDP Receive c o UDP Receive lm 编译它 但出现错误 指出 UDP Data h 没有这样的文件或目录 我如何告诉编译器包含这
  • Angular 4 Selected 在模型中给出时无法正常工作?

    当我试图提供下拉菜单时 默认情况下 我需要选择一个需要显示的值 当我不使用 ngModel 时 我可以显示默认值 没有 ngModel
  • 如何在机器人之父中为电报机器人创建菜单?

    I m new in telegram bot and see this bot that but when type start show menu to me and with out type slash to command jus
  • apache httpclient 4.3 没有超时

    我在使用以下代码使 Apache HttpClient 4 3 post 请求超时时遇到问题 RequestConfig requestConfig RequestConfig custom setConnectionRequestTime
  • Doctrine 查询语言获取每组的最大/最新行

    我正在尝试将相对简单的 SQL 语句转换为可在 Doctrine 中运行的语句 但失败了 这是 SQL 语句 它在针对我的数据库运行时按要求工作 SELECT a FROM score a INNER JOIN SELECT name MA