我試圖用這個查詢Symfony2的教義SQL對象映射: 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 ':錯誤:標識變量(用於聯接路徑表達但在此之前並沒有定義
我如何保持我的映射,同時仍然能夠通過Onsale的每個項目進行排序?
雖然這顯然會起作用(並且我非常感謝您的回答),但似乎奇怪的是,DQL需要在數據庫上進行2次點擊以進行此類看似簡單的查詢。現在我只使用原始SQL而不是DQL。 – BobFlemming 2012-07-27 11:34:43