gpt4 book ai didi

Symfony2 Doctrine SQL 对象在子选择上的映射

转载 作者:行者123 更新时间:2023-12-02 13:18:57 27 4
gpt4 key购买 nike

我正在尝试使用此查询: MySQL SELECT DISTINCT by highest value

    SELECT 
p.*
FROM
product p
INNER JOIN
( SELECT
magazine, MAX(onSale) AS latest
FROM
product
GROUP BY
magazine
) AS groupedp
ON groupedp.magazine = p.magazine
AND groupedp.latest = p.onSale ;

在 Symfony2 和 DQL 中。

我有:

$query = $em->createQuery("SELECT p FROM MyBundle:Product p WHERE p.type = 'magazine' AND  p.maglink IS NOT NULL OR (p.type = 'magazine' AND  p.diglink IS NOT NULL) GROUP BY p.magazine ORDER BY p.onSale DESC");

它可以很好地处理和输出对象,但没有正确的 MAX(onSale)

正在做:

 $query = $em->createQuery("SELECT p , MAX(p.onSale) FROM MyBundle:Product p WHERE p.type = 'magazine' AND  p.maglink IS NOT NULL OR (p.type = 'magazine' AND  p.diglink IS NOT NULL) GROUP BY p.magazine ORDER BY p.onSale DESC");

导致返回非对象。

这个:

$query = $em->createQuery("SELECT
p.*
FROM
MyBundle:Product p
INNER JOIN
( SELECT
p.magazine, MAX(onSale) AS p.latest
FROM
MyBundle:Product p
GROUP BY
p.magazine
) AS groupedp
ON groupedp.magazine = p.magazine
AND groupedp.latest = p.onSale ;");

抛出此错误:[语义错误] 第 0 行,第 127 列“SELECT 附近”': 错误:标识变量(在连接路径表达式中使用但之前未定义。

我认为是因为这个Symfony2 Doctrine query

如何维护我的映射,同时仍然能够按促销对每个商品进行排序?

最佳答案

您是否考虑过将其拆分为两个查询:

第一:直接针对数据库连接运行查询,并按照您想要的顺序返回相关行的 ID。这将复杂查询与 DQL 分开。

第二:根据上一个查询的 ID/顺序,通过 Doctrine 查询行以获取所需的完整实体。

关于Symfony2 Doctrine SQL 对象在子选择上的映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11610742/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com