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

+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.if любой запрос может ссылаться http://www.techonthenet.com/sql/joins.php – user1127214

+0

thx user1127214, ваш подход похож на diEcho, который, я считаю, решение моей проблемы! :) –

Смежные вопросы