SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 18.09.2011 11:36:44

st-agrail
Участник
Зарегистрирован: 17.09.2011
Сообщений: 2

Подскажите, как сделать выборку

Уже третий день бьюсь над следующей задачей:
Есть 2 таблицы:



Table Users

id name
1 Oleg
2 Sergey
3 Mihail
4 Victor
5 Stepan
6 Grigoriy


Table Messages

id messge_body foreign_key
1 body1            1
2 body2            1
3 body3            3
4 body4            2
5 body5            6
6 body6            5
7 body7            2
8 body8            4
9 body9            1
 


У таблицы messages есть внешний ключ foreign_key, тип таблицы InnoDb.
Задача: написать SQL, который будет делать выборку имен двоих самых активных отправителей сообщений, т.е. выборка тех Users.name у которых максимальное количество cообщений в Messages

Неактивен

 

#2 18.09.2011 14:01:59

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Подскажите, как сделать выборку

SELECT u.id,u.name,count(*) c FROM Users u, Messages m WHERE u.id=m.foreign_key GROUP BY u.id ORDER BY c DESC LIMIT 2;

Неактивен

 

#3 18.09.2011 14:32:45

st-agrail
Участник
Зарегистрирован: 17.09.2011
Сообщений: 2

Re: Подскажите, как сделать выборку

спасибо большое!
а можно узнать, почему Вы везде в синтаксисе опускаете 'as'?

Неактивен

 

#4 18.09.2011 14:47:31

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Подскажите, как сделать выборку

AS можно опускать, такая особенность языка. Обычно его и опускают, пробел является синонимом AS

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson