首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DQL理论-如何从数据集中只选择唯一的记录

DQL理论-如何从数据集中只选择唯一的记录
EN

Stack Overflow用户
提问于 2015-03-04 09:03:40
回答 1查看 510关注 0票数 0

我的任务是从数据库中选择具有该品牌最高订单价值的品牌和客户(以及订单价值)。

我想出了一个问题:

代码语言:javascript
复制
    $ordersQuery = $em->createQuery(
            "SELECT b.name AS brand, c.name, MAX(DISTINCT o.value) AS total
            FROM AppBundle:VOrder o
            LEFT JOIN o.brand b
            LEFT JOIN o.customer c
            GROUP BY b.id, c.id"
    ); 

查询的结果如下所示:

品牌1(客户号5-7.00) 品牌1(客户号27-35.00) 品牌1(客户号32- 169.00 ) 品牌1(客户编号38- 101.00 ) 品牌2(客户编号334- 21.00 ) 品牌2(客户号344-61.00) 品牌2(客户编号364-159.00) 品牌2(客户编号427- 170.00 )

正如你所看到的,每个品牌都有很多记录。

如何修改我的查询,以便只显示每个品牌(与客户一起)的最高订单值的一条记录?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-04 10:04:52

我认为用DQL执行它是不可能的,但是您可以这样做原始查询:

代码语言:javascript
复制
SELECT t1.maxvalue, b.name AS brand, c.name
FROM VOrder o
JOIN  (
    SELECT MAX(DISTINCT value) as maxvalue, brandId 
    FROM VOrder
    GROUP BY brandId
) as t1 ON (o.value = maxvalue AND o.brandId = t1.brandId)
LEFT JOIN brand b ON (...)
LEFT JOIN customer c ON (...)

您可以使用new Doctrine_RawSql()构建它。

使用实例:Doctrine - subquery in from

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28850313

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档