2012-04-11 63 views
1

我的問題的比喻是這樣的:是否可以在GROUP BY中執行子查詢?

table: place 
id title   branch 
=============================== 
1 pizza store  california 
2 pizza store  manhattan 
3 coffee shop  california 
4 pizza store  texas 
5 cookie store  new york 

table: rating 
id place_id  rating 
================================ 
1  1   3.5 
2  2   5.0 
3  2   4.2 
4  2   5.0 
5  5   4.0 

我使用的查詢:

SELECT F.id AS id, F.title AS title, G.rating 
FROM place F 
JOIN rating G ON F.id = G.place_id 
GROUP BY F.title 

顯示爲:

id title   rating 
=========================== 
1 pizza store 3.5 
3 coffee shop - 
5 cookie store 4.0 

我想要的是那種具有評級,標題最大的一個,在這種情況下,我希望它顯示評分5和ID 2的比薩店。是否可以在GROUP BY中插入一些子查詢?

在此先感謝!

+0

你的查詢是沒有意義的。您不能選擇標識和評級,但只能按標題分組。 – McGarnagle 2012-04-11 04:34:46

+0

僅供參考,這只是我的問題花花公子 – 2012-04-11 04:37:08

+0

的比喻,我猜? – 2012-04-11 04:49:47

回答

3

嘗試

SELECT F.id , F.title, s.Maxrating 
FROM place F 
INNER JOIN (SELECT id,Max(rating) as MaxRating FROM rating GROUP BY place_id) s 
ON s.id = F.id 
+0

thx diEcho這種方法!我相信這是解決方案! – 2012-04-11 05:11:39

2
SELECT F.id AS id, F.title AS title, max(G.rating) 
FROM place F, rating G 
where F.id = G.place_id(+) 
group by f.id, f.title 
+0

這是什麼(+)' – diEcho 2012-04-11 04:55:42

+0

Iam使用外部Join.if任何查詢你可以參考http://www.techonthenet.com/sql/joins.php – user1127214 2012-04-11 04:59:05

+0

thx user1127214,你的方法類似於我認爲是diEcho解決我的問題! :) – 2012-04-11 05:12:52