| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Составление SQL-запросов > определить колличесвто |
| Автор: Samotnik 29.9.2009, 00:29 | ||
Привет, есть такая Б.д,
нужно определить сколько билетов было продано на ближайший рейс до Москвы. Буду признателен за помощь |
| Автор: Gluttton 29.9.2009, 01:18 | ||||||||||
| Привет! Круто, я пишу самому Samotnik'y! Возможно я уже устал, но мне кажеться, что вполне достаточно одной таблицы:
И если это так, то вот такой вот запрос:
Вернет вот такие вот данные:
Что, помоему правильно... Важно отметить, что запрос не учитывает "настоящее время", т.е. ближайший рейс запросто может оказаться в прошлом... Если это нужно учесть, то прошу указать СУБД (хотя итак видно, что не мой любимый Firebird Добавлено через 14 минут и 35 секунд Усилил тестовые данные...
Запрос вернул:
Т.е. вроде всё правильно... |
| Автор: Deniz 29.9.2009, 05:36 | ||
| Gluttton, как-то сложно получилось. Действительно достаточно только рейсов, если я правильно понял структуры БД. А вот так не пойдет? СУБД не указана, поэтому ...
vremya_vileta хранить в varchar не очень хорошо. |
| Автор: Gluttton 29.9.2009, 07:13 |
Ну здрасте! Конечно же нет! Ты что думаешь, что Samotnik написал такой длинный вопрос, что бы в ответ получить одну строчку кода А на самом деле, действительно, твой запрос будет попроще, проверил на своей БД - возвращает 13... Добавлено через 2 минуты и 19 секунд Адаптировать по конкретную СУБД, можно, почитв http://ru.wikipedia.org/wiki/Select_(SQL)... В частности для Firebird это будет first... |
| Автор: Zloxa 29.9.2009, 08:51 |
| Парни, чтобы найти ближайший рейс, ранжироваться надо по абсолюту разницы между сейчас и датой вылета. Вы же ищите самый ранний рейс на москву. Samotnik, арифметика дат специфична для платформы. Озвучь плиз платформу. |
| Автор: Gluttton 29.9.2009, 09:05 | ||||||
Я об этом честно предупреждал
Для моего случая необходимо внутри условий WHERE добавить соответсвенно: (псевдокод)
Во втором примере можно добавить десять минут к правой части условия и это будет соответсововать тому, что например до отправки осталось десять минут и посадка окончена... |
| Автор: Zloxa 29.9.2009, 09:14 |
Это будет ближайший будущий рейс что ближе к нулю - минус единица или шесть? Вооще я просто к словам придираюсь |
| Автор: Deniz 29.9.2009, 10:53 |
| Да уж, что-то мы с текущей датой ... забыли. Ждем Samotnik для разъяснений задачи. |
| Автор: Gluttton 29.9.2009, 14:44 |
| Ага приходишь так себе на ж\д воказл, купил белет на ближайший поезд, вышел на пирон... а поезд то оказывается ушел ещё два часа назад Всё правильно - никаких двояких толкований! |
| Автор: Samotnik 30.9.2009, 00:14 | ||
Deniz, твой способ не работает ((((
Gluttton, СПАСИБО !!!! |
| Автор: Zloxa 30.9.2009, 07:29 | ||||
ухты, Samotnik на ораклю перешел ;)) Что ж ты так сразу и не сказал?
Для пущего перфомансу запросу добавить индекс:
Но лучше, конечно, дату хранить как дату а не как строку. |
| Автор: Samotnik 30.9.2009, 18:20 |
не, это не мне, это друг попросил, ему лабу в универе здавать. Я кое что сам помог, а в остально ковырятся особо времени нету Спасибо, еще раз, перешлю ему щас этот код - хай тестит |