![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Запросы
dumka © (2008-04-09 13:03:00)Привет всем!
Нужно: вычислить суммарную стоимость последнего по времени(Дата) заказа. Если таких закзов несколько, то из них нужно выбрать заказ с найбольшим идентификатором.
SELECT Sum([Kol_blud]*[stoim]) AS Выражение1, Zakaz.Data, Zakaz.Kod_zak_ka
FROM Bludo INNER JOIN Zakaz ON Bludo.Kod_bl = Zakaz.Kod_bl
GROUP BY Zakaz.Data, Zakaz.Kod_zak_ka
HAVING (((Zakaz.Data)=(Select Max([Data]) from zakaz)));
Вот до сель работает, как реализовать второе условие?
СУБД ACCESS 2007
dumka (2008-04-09 14:05:00) [1]
> Palladin
Да, все мне понятно.
МЫ молодцы...
Palladin (2008-04-09 13:58:00) [2]кто бы сомневался... а если еще поймешь этот запрос, вообще молодцом будешь... значит не все потеряно еще...
dumka (2008-04-09 13:51:00) [3]
> Palladin
Обалдеть, работает!!!
Kolan (2008-04-09 13:45:00) [4]> блин, не сразу сообразил что такое bludo
Угу, даже таблица в БД называется неопититно, наверно еда еще хуже
dumka (2008-04-09 13:44:00) [5]Во всяком случае спасибо,я подумаю
clickmaker (2008-04-09 13:44:00) [6]блин, не сразу сообразил что такое bludo
думаю, что за "блудозаказ" такой? ))
Palladin (2008-04-09 13:40:00) [7]select sum(Kol_blud*stoim), Zakaz.Data, Zakaz.Kod_zak_ka
from Bludo,Zakaz
where
Bludo.Kod_bl=Zakaz.Kod_bl and
zakaz.kod_zak_ka=(Select Max(kod_zak_ka) from zakaz where Zakaz.Data=(select max(Data) from Zakaz))
group by Zakaz.Data, Zakaz.Kod_zak_ka
наслаждайся...
Palladin (2008-04-09 13:36:00) [8]
> dumka (09.04.08 13:24) [7]
остальсь еще одно условие добавить в Select Max([Kod_zak_ka]) from zakaz
и убрать все из having'а в where и sum тоже убрать, если Sergey13 © (09.04.08 13:33) [9] не прав относительно уникальности идентификаторов заказов, если прав, то сум оставить :)
Sergey13 (2008-04-09 13:33:00) [9]> [8] dumka (09.04.08 13:27)
Если так можно провоцировать и заполнять вручную чем угодно (сейчас ИШ придет ругаться 8-)) то логично предположить несколько заказов с одинаковыми идентификаторами. 8-)
dumka (2008-04-09 13:27:00) [10]
> А может быть максимальный идентификатор с НЕ максимальной
> датой?
Я думаю что да, такое условие, может это только ловушка.
Но я такую ситуацию справоцировала, т.е. так заполнила данные
dumka (2008-04-09 13:24:00) [11]SELECT Sum([Kol_blud]*[stoim]) AS Выражение1, Zakaz.Data, Zakaz.Kod_zak_ka
FROM Bludo INNER JOIN Zakaz ON Bludo.Kod_bl = Zakaz.Kod_bl
GROUP BY Zakaz.Data, Zakaz.Kod_zak_ka
HAVING (((Zakaz.Data)=(Select Max([Data]) from zakaz)) and ((Zakaz.Kod_zak_ka)=(Select Max([Kod_zak_ka]) from zakaz)));
Так вот я сделала вот так, отбора нет, но и ошибки нет.
Sergey13 (2008-04-09 13:24:00) [12]> [5] Kolan © (09.04.08 13:21)
Я не вообще спросил, а конкретного человека про конкретную БД. Понятно, что "вообше" Ид-шники с датами никак не связаны.
Kolan (2008-04-09 13:21:00) [13]> А может быть максимальный идентификатор с НЕ максимальной
> датой?
Может. Например SQLite, если авто инкрементить уже некуда будет заполнять имеющиеся пробелы в нумерации
Kolan (2008-04-09 13:20:00) [14]> и дата максимальная и идентификатор
ИспользуйAND
Sergey13 (2008-04-09 13:19:00) [15]> [2] dumka (09.04.08 13:17)
А может быть максимальный идентификатор с НЕ максимальной датой?
dumka (2008-04-09 13:17:00) [16]Нет, вот такое условие и дата максимальная и идентификатор максимальный
Sergey13 (2008-04-09 13:13:00) [17]> [0] dumka (09.04.08 13:03)
> Если таких закзов несколько, то из них нужно выбрать заказ
> с найбольшим идентификатором.
Ну так и выбирай сразу по максимальному идентификатору. Зачем дату сюда пивлекать?