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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> База данных в MySQL Front, Необходимо создать запрос 
:(
    Опции темы
Гость_STUDENT
Дата 22.6.2005, 11:59 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


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
Дата 22.6.2005, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

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



Цитата
Интервал движения поездов на линии считается, как Llen/Nt.


Длину поделить на номер линии? smile Арбузы делим на яблоки и получаем интервал?

Не продумана база. в данном варианте задача не разрешима. Движение поездов в метро начинается с двух сторон ОДНОВРЕМЕННО. Интервалы будут разные для двух направлений. А одно из направлений не учтено вообще.


--------------------
Теперь при чем :P
PM   Вверх
Гость_STUDENT
Дата 23.6.2005, 14:05 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Длину линии делим на количество поездов на линии, получаем интервал движения, считаем движение круговым. База чисто символическая (учебная) нужен запрс!!!
  Вверх
Гость_STUDENT
Дата 23.6.2005, 18:07 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Забыл добавить, что база данных связывается с помощью Perl с Web интерфейсом. Разговривал сегодня с преподом, он сказал, что это не очень сложно, только я пока додуматься не могу. Так как цикл в MySQL не делается, делать надо через Perl. Как он объяснил:
- Нам известно первое прихождение поезда на любую станцию (6.00- поезд на начальной станции, 6.00+Dist - поезд на выбранной станции);
- Нам известен интервал движения на данной линии (Llen/Nt - длина линии, мин разделить на количество поездов на линии, шт);
- Зная это, нам нужно сделать запросы используя MySQL и цикл Perl, типа того что:
while время не равно 01.00{
do (6.00+Dist)+интервал движения
print и выводить получаемые значения}. Вот. Вроде бы все рассказал.


  Вверх
Ignat
Дата 23.6.2005, 18:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

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



Ключи в базе есть?
Если чесно, то не хочется писать запрос - тебе даже лень сюда структуру таблиц SQL-ем скинуть.

Вот, если я правильно понял что требуется:

Код

SELECT `a`.`Snam`, `b`.`Lnam`, `b`.`Llen`/`b`.`Nt` as `interval`,`c`.`Dist` as `first_time` FROM `stations` `a`,`lines` `b`, `stat_detail` `c` WHERE `a`.`Snum`=$num AND `c`.`Snum` =`a`.`Snum` AND `b`.`Lnum`=`c`.`Lnum`


В этом запросе таблицы перечислены в твоем порядке, $id - значение номера станции, по которому будет произведена выборка.
Результат выборки - одна строка:
Код

|     Snam    |       Lnam      |       interval     |   first_time    |

Snam и Lnam - твои имена, interval - интервал движения в минутах, first_time - время, через которое поезд дойдет до заданной станции от начальной, численно равно Dist

Далее цикл в перле, а перл не знаю smile


В любом случае, таблицы организованы неграмотно.


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


 




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


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

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