【发布时间】:2015-07-16 12:13:00
【问题描述】:
在 Symfony 项目中,我尝试使用计算字段进行查询。简化很多我的 SQL 会是这样的:
SELECT o.id, (p.price_a + p.price_b) as total_price
FROM objects o
INNER JOIN prices p
ON o.id = p.object_id
HAVING total_price > 10
我的计算字段更复杂,并且使用会发生变化的外部值,我无法预先计算它。
因为我只想要不同的 object.id,所以我将上面的代码添加为子查询:
SELECT DISTINCT o_id
FROM (
SELECT o.id as o_id, (p.price_a + p.price_b) as total_price
FROM object o
INNER JOIN price p
ON o.id = p.object_id
HAVING total_price > 10)
在 Symfony 中,我希望这个查询只返回不同的“对象”。
我用查询生成器尝试了很多选项,但我无法向“FROM”子句添加子查询。
我试图避免使用效率低下的 EXISTS 子句:
SELECT DISTINCT o.id
FROM objects o
WHERE EXISTS (
SELECT p.*, (p.price_a + p.price_b) as total_price
FROM prices p
WHERE o.id = p.object_id
HAVING total_price > 10)
有没有什么方法可以在不使用“EXISTS”的情况下使用查询生成器来做到这一点?
【问题讨论】:
标签: symfony doctrine-orm doctrine