Автор Тема: Интересный запрос  (Прочитано 6646 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн AlieN

  • Абыр!=)
  • Ветеран
  • *****
  • Сообщений: 1315
  • +0/-1
  • 2
    • Просмотр профиля
Интересный запрос
« : 17 Июля 2002, 15:56:36 »
вот такой:
select userid, race1, race2, race3, race4, (race1+race2+race3+race4) as total, day from gamerating where min(total) group by userid

Удивительно, но mysql говорит:
Invalid use of group function

В общем суть: надо узнать самое быстрое прохождение пользователя в по всем четырем гонкам

Как написать - хз
The Chemical Brothers - Hey Boy Hey Girl (User Friendly Mix)
Peter Presta pres - Set Sail(Peter Presta Apple Jaxx Dub) She S.Sunshine Feat Mila - Bring The Beat Back (Club Mix) Jerry Ropero - Home Alone (Dub Mix)

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
Интересный запрос
« Ответ #1 : 17 Июля 2002, 16:19:37 »
Попробуй:
select userid, race1, race2, race3, race4, (race1+race2+race3+race4) as total, day from gamerating  group by userid having min(total)
AS IS...

Оффлайн AlieN

  • Абыр!=)
  • Ветеран
  • *****
  • Сообщений: 1315
  • +0/-1
  • 2
    • Просмотр профиля
Интересный запрос
« Ответ #2 : 17 Июля 2002, 16:28:12 »
ThE0ReTiC
Ответ MySQL:


Unknown column \'total\' in \'having clause\'
The Chemical Brothers - Hey Boy Hey Girl (User Friendly Mix)
Peter Presta pres - Set Sail(Peter Presta Apple Jaxx Dub) She S.Sunshine Feat Mila - Bring The Beat Back (Club Mix) Jerry Ropero - Home Alone (Dub Mix)

Оффлайн Serchey

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 216
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.rivne.ukrtelecom.ua
Интересный запрос
« Ответ #3 : 17 Июля 2002, 16:34:45 »
Мoжет я не понял вопрос, но
SELECT userid, race1, race2, race3, race4,
(race1+race2+race3+race4) AS total, day
FROM gamerating
ORDER BY total DESC LIMIT 1;
возможно(должно) подойдет.

Оффлайн AlieN

  • Абыр!=)
  • Ветеран
  • *****
  • Сообщений: 1315
  • +0/-1
  • 2
    • Просмотр профиля
Интересный запрос
« Ответ #4 : 17 Июля 2002, 16:57:47 »
Serchey

Цитировать
я не понял вопрос
- Да не понял(зачем не тогда группировка?)

Прочитай внимательно мой первый пост
The Chemical Brothers - Hey Boy Hey Girl (User Friendly Mix)
Peter Presta pres - Set Sail(Peter Presta Apple Jaxx Dub) She S.Sunshine Feat Mila - Bring The Beat Back (Club Mix) Jerry Ropero - Home Alone (Dub Mix)

Оффлайн Covex

  • Только встал и уже устал.
  • Постоялец
  • ***
  • Сообщений: 208
  • +0/-0
  • 2
    • Просмотр профиля
Интересный запрос
« Ответ #5 : 17 Июля 2002, 16:59:58 »
select  min(race1+race2+race3+race4) as total, userid, day from gamerating group by userid, day - мин время по дням
« Последнее редактирование: 17 Июля 2002, 17:13:09 от Covex »

Оффлайн Covex

  • Только встал и уже устал.
  • Постоялец
  • ***
  • Сообщений: 208
  • +0/-0
  • 2
    • Просмотр профиля
Интересный запрос
« Ответ #6 : 17 Июля 2002, 17:12:32 »
select min(race1+race2+race3+race4) as total, userid, day from gamerating group by userid  -  минимальное время за все попытки

Оффлайн AlieN

  • Абыр!=)
  • Ветеран
  • *****
  • Сообщений: 1315
  • +0/-1
  • 2
    • Просмотр профиля
Интересный запрос
« Ответ #7 : 17 Июля 2002, 17:20:49 »
Covex
Это понятно......
Только мне ещё надо узнать как он прошел каждую трассу за эту самую крутую попытку
Если я добавляю эти столбцы , то мне показываются лучшие его попытки в этих трассах (с различных заездов)

В общем вот дамп:
CREATE TABLE gamerating (
  userID int(11) NOT NULL default \'0\',
  day date NOT NULL default \'0000-00-00\',
  race1 double NOT NULL default \'0\',
  race2 double NOT NULL default \'0\',
  race3 double NOT NULL default \'0\',
  race4 double NOT NULL default \'0\'
) TYPE=MyISAM;

#
# Дамп данных таблицы `gamerating`
#

INSERT INTO gamerating VALUES (340, \'2002-07-10\', \'81.32123\', \'120.234\', \'116.233\', \'130.1234\');
INSERT INTO gamerating VALUES (36319, \'2002-07-10\', \'97.8390000000002\', \'93.517\', \'112.562999999999\', \'150.839\');
INSERT INTO gamerating VALUES (9158, \'2002-07-10\', \'83.0919999999999\', \'92.8869999999996\', \'105.203\', \'132.457999999999\');
INSERT INTO gamerating VALUES (9158, \'2002-07-10\', \'86.4840000000001\', \'90.2049999999998\', \'98.5719999999996\', \'132.198999999999\');
INSERT INTO gamerating VALUES (38055, \'2002-07-12\', \'85.5940000000003\', \'93.732\', \'105.973999999999\', \'136.714999999999\');
INSERT INTO gamerating VALUES (38120, \'2002-07-15\', \'82.7569999999996\', \'92.4009999999996\', \'108.804999999999\', \'154.802\');
INSERT INTO gamerating VALUES (208, \'2002-07-15\', \'85.9570000000006\', \'95.6819999999997\', \'108.683\', \'143.043999999999\');
INSERT INTO gamerating VALUES (38055, \'2002-07-15\', \'83.6909999999999\', \'92.2600000000002\', \'103.247999999999\', \'135.828999999999\');
INSERT INTO gamerating VALUES (38055, \'2002-07-16\', \'84.9290000000004\', \'88.873\', \'98.5359999999997\', \'138.563999999999\');
INSERT INTO gamerating VALUES (9158, \'2002-07-17\', \'80.366\', \'81.8229999999997\', \'91.3629999999997\', \'124.497999999999\');

Что должно показаться:
9158 2002-07-17  80.366 81.8229999999997 91.3629999999997 124.497999999999 378.05
38055 2002-07-16  84.9290000000004 88.873 98.5359999999997 138.563999999999 410.902
The Chemical Brothers - Hey Boy Hey Girl (User Friendly Mix)
Peter Presta pres - Set Sail(Peter Presta Apple Jaxx Dub) She S.Sunshine Feat Mila - Bring The Beat Back (Club Mix) Jerry Ropero - Home Alone (Dub Mix)

Оффлайн Covex

  • Только встал и уже устал.
  • Постоялец
  • ***
  • Сообщений: 208
  • +0/-0
  • 2
    • Просмотр профиля
Интересный запрос
« Ответ #8 : 17 Июля 2002, 18:40:12 »
select min(race1+race2+race3+race4) as total, userid, day, race1, race2, race3, race4 from gamerating group by userid
это гонит пургу
а это вроде нет
select min(race1+race2+race3+race4) as total, userid, day, race1, race2, race3, race4 from gamerating group by userid, day
вывод ---------  видимо, (ИМХО) надо делать  временную таблицу

Оффлайн Covex

  • Только встал и уже устал.
  • Постоялец
  • ***
  • Сообщений: 208
  • +0/-0
  • 2
    • Просмотр профиля
Интересный запрос
« Ответ #9 : 17 Июля 2002, 19:39:43 »
MS access не хавает
 select min(race1+race2+race3+race4) as total, userid, day, race1, race2, race3, race4 from gamerating group by userid
пишет
Попытка выполнить запрос, который не включает указанное выражение  как часть статистической функции или группы. (Ошибка 3122)
« Последнее редактирование: 17 Июля 2002, 19:47:03 от Covex »

Оффлайн Serchey

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 216
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.rivne.ukrtelecom.ua
Интересный запрос
« Ответ #10 : 17 Июля 2002, 23:05:36 »
Верняк, без временной таблици не обойтись!

Оффлайн AlieN

  • Абыр!=)
  • Ветеран
  • *****
  • Сообщений: 1315
  • +0/-1
  • 2
    • Просмотр профиля
Интересный запрос
« Ответ #11 : 18 Июля 2002, 13:08:02 »
Напишите плиз как для чайника как это сделать :)
The Chemical Brothers - Hey Boy Hey Girl (User Friendly Mix)
Peter Presta pres - Set Sail(Peter Presta Apple Jaxx Dub) She S.Sunshine Feat Mila - Bring The Beat Back (Club Mix) Jerry Ropero - Home Alone (Dub Mix)

Оффлайн Alexandr

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 865
  • +0/-0
  • 0
    • Просмотр профиля
    • http://gtp.hobi.ru
Интересный запрос
« Ответ #12 : 18 Июля 2002, 13:23:41 »
CREATE TEMPORARY TABLE tmp SELECT * FROM gamerating WHERE 1=0;
select min(race1+race2+race3+race4) as total, userid from gamerating group by userid;
в цикле для каждого userid{
INSERT INTO tmp SELECT *, (race1+race2+race3+race4) as total FROM gamerating WHERE userID=$userID AND ROUND((race1+race2+race3+race4), 5)=ROUND($total, 5);
}
SELECT * FROM tmp;
« Последнее редактирование: 18 Июля 2002, 13:45:11 от Alexandr »
Kiss my CSS
Pусские gtp gp3 ( midi + tab ) -   - Все для Авто.

Оффлайн Serchey

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 216
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.rivne.ukrtelecom.ua
Интересный запрос
« Ответ #13 : 18 Июля 2002, 16:29:25 »
Я бы сделал это так:

CREATE TEMPORARY TABLE tmp (
userID int(11) NOT NULL default \'0\',
total double NOT NULL default \'0\'
) TYPE=HEAP;

INSERT INTO tmp SELECT userid, min(race1+race2+race3+race4)  FROM gamerating GROUP BY userid;

SELECT g.userid, g.race1, g.race2, g.race3, g.race4, (g.race1+g.race2+g.race3+g.race4) as total, g.day FROM
gamerating g, tmp t WHERE (g.race1+g.race2+g.race3+g.race4)=t.total and g.userid=t.userid;

Оффлайн Covex

  • Только встал и уже устал.
  • Постоялец
  • ***
  • Сообщений: 208
  • +0/-0
  • 2
    • Просмотр профиля
Интересный запрос
« Ответ #14 : 19 Июля 2002, 00:08:51 »
Alexandr
Serchey
чёй- то я ваши конструкции нефига не понял.
Serchey в том виде в каком написано оно не может работать.

Что-то в этом мире не так... Надо жрецов спросить. Может они помогут. Я лично нефига из  временой таблицы не высосал ->  ошибки при группировке

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28