SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 11.05.2012 17:07:19

dissonance96
Участник
Зарегистрирован: 11.05.2012
Сообщений: 3

вывести лучших

имеется таблица которая содержит информацию о завоеванных медалях на олимпийских играх.

год/вид спорта/спортсмен1/страна1/спортсмен2/страна2/спортсмен3/страна3
1991/бег/Вася Пупкин/Россия/Поппандопалос Георгиос/Греция/Штейман Карл/Германия

нужно сделать выборку "год проведения, страна-победительница (у к. больше всех золотых медалей), страна-коллекционер (у к. больше всех разных медалей). не получается посчитать и вывести страны. делал через подзапрос в Select, через оператор Count. в результате получал таблицу в которой вместо стран указано число - сколько раз эта страна встречается в списке. а лучшую не выводит. подскажите как сделать? через какую функцию?

Неактивен

 

#2 11.05.2012 17:19:30

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: вывести лучших

сделать таблицу вида:
год/вид спорта/спортсмен/страна/тип медали
1991/бег/Вася Пупкин/Россия/золото
1991/бег/Поппандопалос Георгиос/Греция/серебро
.....

тогда страна-победительница
select `страна` from `таблица` where `год`=1991 and `вид спорта`='бег' and `тип медали`='золото' group by 1 order by count(*) desc limit 1;

Неактивен

 

#3 11.05.2012 17:29:14

dissonance96
Участник
Зарегистрирован: 11.05.2012
Сообщений: 3

Re: вывести лучших

это было бы слишком просто smile а есть варианты как это сделать не меняя таблицу?

Неактивен

 

#4 11.05.2012 17:41:16

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: вывести лучших

select `страна1` from
(select `страна1`, count(*) c from `таблица` where `год`=1991 and `вид спорта`='бег' group by `страна1` order by 2 desc ) t1
join
(select count(*) c from `таблица` where `год`=1991 and `вид спорта`='бег' group by `страна1` order by 1 desc limit 1) t2
on t1.c=t2.c

Неактивен

 

#5 24.06.2012 12:51:42

dissonance96
Участник
Зарегистрирован: 11.05.2012
Сообщений: 3

Re: вывести лучших

Майкрософт Access 2007 ругается на строчку

(select count(*) c from `таблица` where `год`=1991 and `вид спорта`='бег' group by `страна1` order by 1 desc limit 1) t2

говорит неправильный запрос в count
а если год нужен любой, не только 1991, как вывести?

Неактивен

 

#6 24.06.2012 14:52:46

evgeny
Гуру
Зарегистрирован: 04.05.2009
Сообщений: 335

Re: вывести лучших

dissonance96 написал:

Майкрософт Access 2007 ругается на строчку

А вы с Mysql вообще работаете ?

Неактивен

 

#7 24.06.2012 14:58:06

evgeny
Гуру
Зарегистрирован: 04.05.2009
Сообщений: 335

Re: вывести лучших

Неактивен

 

Board footer

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