【发布时间】:2012-07-21 13:59:52
【问题描述】:
我正在尝试使用此查询: 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
我怎样才能维护我的映射,同时仍然能够按 onsale 对每个项目进行排序?
【问题讨论】: