2012-04-11 15 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 

私が欲しいものを格付けしているタイトルを並べ替えることです最大1つ、この場合は、評価5とID 2のピザ店を表示します。GROUP BYの中にいくつかのサブクエリを挿入することは可能ですか?

ありがとうございます!

+0

を試してみてください。 IDと評価を選択することはできませんが、タイトルごとにグループ化するだけです。 – McGarnagle

+0

FYI、これは私の問題のちょうど類似である –

+0

MySQL、そう思いますか? –

答えて

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このアプローチのために!私はこれが解決策だと信じています! –

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

+0

Iamは外部Joinを使用しています。質問があれば、http://www.techonthenet.com/sql/joins.php – user1127214

+0

thx user1127214を参照できます。あなたのアプローチは私が信じるdiEchoに似ています私の問題の解決策! :) –

関連する問題