2012-04-11 3 views
1

mein Problem Analogie ist wie folgt:ist es möglich, Unterabfragen innerhalb von GROUP BY zu tun?

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 

i-Abfrage verwenden:

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 

das Display sein wird:

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

, was ich will, ist Titel zu sortieren, die Bewertung hat mit das Maximum, in diesem Fall möchte ich es Pizza Laden mit Rating 5 und ID 2 anzeigen. Ist es möglich, einige Unterabfragen in GROUP BY?

Vielen Dank im Voraus!

+0

Die Abfrage Sie keinen Sinn macht. Sie können ID und Bewertung nicht auswählen, sondern nur nach Titel gruppieren. – McGarnagle

+0

FYI, das ist nur eine Analogie zu meinem Problem dude –

+0

MySQL, schätze ich? –

Antwort

3

versuchen

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 für diesen Ansatz! Ich glaube, das ist die Lösung! –

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

Was ist das '(+)' – diEcho

+0

Iam mit äußeren Join.wenn Sie eine Frage http://www.techonthenet.com/sql/joins.php – user1127214

+0

thx user1127214, Ihr Ansatz ist vergleichbar mit diEcho, die ich glaube, ist Die Lösung für mein Problem! :) –