Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> запрос 
:(
    Опции темы
del3d
Дата 18.9.2009, 14:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 128
Регистрация: 13.11.2007

Репутация: нет
Всего: нет



Всем привет!
Наверное, очень простой запрос, но почему-то не могу сообразить..
Имеется выдуманная таблица.. 
Код
CREATE TABLE `bankomat`(
  `id` int,
  `id_user` int,
  `operation_date` date,
  `money` int) 

Грубо говоря, пользователь снимает деньги и в базе фиксируется данная операция.. (когда и сколько денег было снято).
Вопрос: Как выбрать только последние операции всех пользователей?
(когда и сколько в последний раз снял Иванов, Петров.. итд)

PM MAIL   Вверх
bars80080
Дата 18.9.2009, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 5
Всего: 315



может быть

Код

SELECT * FROM `bankomat` GROUP BY `id_user` ORDER BY `operation_date` DESC

PM MAIL WWW   Вверх
Akina
Дата 18.9.2009, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 106
Всего: 454



В MySQL проканает вот такое:
Код

Select `id_user`, Max(`operation_date`), `money`
From `bankomat`
Group By `id_user`



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Zloxa
Дата 18.9.2009, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 33
Всего: 161



Цитата(bars80080 @  18.9.2009,  16:08 Найти цитируемый пост)
может быть

Цитата(Akina @  18.9.2009,  16:24 Найти цитируемый пост)
проканает 

нет

Цитата

MySQL extends the use of GROUP BY so that you can use nonaggregated columns or calculations in the SELECT list that do not appear in the GROUP BY clause.

When using this feature, all rows in each group should have the same values for the columns that are ommitted from the GROUP BY part. The server is free to return any value from the group, so the results are indeterminate unless all values are the same. 

тут
т.е. в результате сервер обещает вернуть любое значение из группы, в то время, когда хотелось бы с наибольшим operation_date. Возможно ответ сервера будет совпадать с желаемым, но гарантий что так будет при любых условиях - нет.


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
Akina
Дата 18.9.2009, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 106
Всего: 454



Код

Select `id_user` as i1, `operation_date` as o1, `money` as m1
From `bankomat` as b1
Join
(
  Select `id_user` as i2, Max(`operation_date`) as o2
  From `bankomat` as b2
  Group By i2
) as b3
on b1.i1=b3.i2 and b1.o1=b3.o2
Такое сработает в любой СУБД.

При условии, конечно, что id_user+operation_date уникально по таблице.

Это сообщение отредактировал(а) Akina - 19.9.2009, 09:29


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
del3d
Дата 19.9.2009, 00:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 128
Регистрация: 13.11.2007

Репутация: нет
Всего: нет



Цитата
Такое сработает в любой СУБД.

Примерно понятно как должно работать, только вот:
Код

ERROR 1248 (42000): Every derived table must have its own alias

PM MAIL   Вверх
Zloxa
Дата 19.9.2009, 01:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 33
Всего: 161



Цитата(del3d @  19.9.2009,  00:15 Найти цитируемый пост)
 Every derived table must have its own alias

И что? Translate.google.com вдруг оказался недоступным?


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
Akina
Дата 19.9.2009, 09:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 106
Всего: 454



Цитата(del3d @  19.9.2009,  01:15 Найти цитируемый пост)
Примерно понятно как должно работать, только вот:

Поправил. 
Мог бы, кстати, и сам...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
del3d
Дата 21.9.2009, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 128
Регистрация: 13.11.2007

Репутация: нет
Всего: нет



Спасибо большое, Akina, выручил!  smile 

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0862 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.