【发布时间】:2016-07-08 08:22:25
【问题描述】:
我在 Doctrine 中有以下 SELECT 子句(查询本身是使用查询生成器创建的):
u.username,
MAX(p.score) as highscore,
SUM(pc.badgeCount) as badgeCount,
(SUM(pc.badgeCount) / :badgeSum) AS probability,
(-LOG(RAND()) * probability) as weight
(p是主实体的别名,pc是联合实体)
这给了我来自 MySQL 的错误消息:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'probability' in 'field list'
如何在同一个 SELECT 子句中重复使用创建的别名?
【问题讨论】:
-
你需要一个子查询。我不知道教义是否有任何优雅的方式来编写子查询 - 但我宁愿用 PHP 计算
probability和weight。 -
正确的非 hackish 方式是 subquery/cte using a calculated column in the same query 或简单的复制粘贴表达式定义,它将适用于各种 SQL。您正在搜索的机制称为 lateal column reference。
标签: php mysql doctrine-orm doctrine