![]() |
|
Модераторы: skyboy |
![]()
|
|
| Гость_STUDENT |
|
|||
|
Unregistered |
Существует база данных "расписание метро" из трех таблиц. 1-я таблица (Станции): Snum, Snam - номер станции (char) и название станции (char) соответственно. 2-я таблица (Линии метро): Lnum, Lnam,Llen, Nt - номер линии (char), название линии (char), длина линии, мин (int), количество поездов на линии (int) соответственно. И 3-я таблица из этих 2-х: Snum - номер станции (char), Lnum - номер линии (char), Dist - расстояние от начальной станции, мин (равно нулю у начальных станций). Метро работает к примеру с 06.00 до 00.00 ч. Время стоянки не учитывается. Интервал движения поездов на линии считается, как Llen/Nt.
Начало движение поезда от к.-л. станции считается, как 6.00+Dist (у начальных станций линиий это значение и равно 6.00, т.к. Dist для них =0). Требуется организовать как можно проще такой запрос при котором выводилось бы расписание движения поездов для данной станции: Номер линии, название станции и время проезда через эту станцию за какой-то промежуток времени ( 1 час) или с 6.00 до 00.00ч. Например: Линия1 Пл.Мужества 6.00, 6.15, 6.30, 6.45, 7.00 и т.д. Линия2 Сокольники 6.40, 6.50, 7.00, 7.10, 7.20 и т.д. Подскажите, пожалуйста, заранее благодарю!!! |
|||
|
||||
| Ignat |
|
|||
![]() Флудератор ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4030 Регистрация: 19.4.2004 Где: غيليندزيك مدينة Репутация: 21 Всего: 73 |
Длину поделить на номер линии? Не продумана база. в данном варианте задача не разрешима. Движение поездов в метро начинается с двух сторон ОДНОВРЕМЕННО. Интервалы будут разные для двух направлений. А одно из направлений не учтено вообще. -------------------- Теперь при чем :P |
|||
|
||||
| Гость_STUDENT |
|
|||
|
Unregistered |
Длину линии делим на количество поездов на линии, получаем интервал движения, считаем движение круговым. База чисто символическая (учебная) нужен запрс!!!
|
|||
|
||||
| Гость_STUDENT |
|
|||
|
Unregistered |
Забыл добавить, что база данных связывается с помощью Perl с Web интерфейсом. Разговривал сегодня с преподом, он сказал, что это не очень сложно, только я пока додуматься не могу. Так как цикл в MySQL не делается, делать надо через Perl. Как он объяснил:
- Нам известно первое прихождение поезда на любую станцию (6.00- поезд на начальной станции, 6.00+Dist - поезд на выбранной станции); - Нам известен интервал движения на данной линии (Llen/Nt - длина линии, мин разделить на количество поездов на линии, шт); - Зная это, нам нужно сделать запросы используя MySQL и цикл Perl, типа того что: while время не равно 01.00{ do (6.00+Dist)+интервал движения print и выводить получаемые значения}. Вот. Вроде бы все рассказал. |
|||
|
||||
| Ignat |
|
||||
![]() Флудератор ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4030 Регистрация: 19.4.2004 Где: غيليندزيك مدينة Репутация: 21 Всего: 73 |
Ключи в базе есть?
Если чесно, то не хочется писать запрос - тебе даже лень сюда структуру таблиц SQL-ем скинуть. Вот, если я правильно понял что требуется:
В этом запросе таблицы перечислены в твоем порядке, $id - значение номера станции, по которому будет произведена выборка. Результат выборки - одна строка:
Snam и Lnam - твои имена, interval - интервал движения в минутах, first_time - время, через которое поезд дойдет до заданной станции от начальной, численно равно Dist Далее цикл в перле, а перл не знаю В любом случае, таблицы организованы неграмотно. -------------------- Теперь при чем :P |
||||
|
|||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | MySQL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |