запросы в Microsoft Sql Server
плз помогите с написанием запроса-горит)))
Имеется база данных Железной дороги CREATE TABLE train (id int not null, number varchar(255) not null CONSTRAINT number_unique UNIQUE, ) ALTER TABLE train ADD PRIMARY KEY (id); CREATE TABLE place (id int not null PRIMARY KEY, car int, seat int , train_id int not null); ALTER TABLE place ADD FOREIGN KEY (train_id) REFERENCES train; CREATE TABLE trainstation (train_id int not null , station_id int not null, order_train int not null, arrival_date datetime, depature_date datetime ) ALTER TABLE trainstation ADD PRIMARY KEY (train_id, station_id); ALTER TABLE trainstation ADD FOREIGN KEY (train_id) REFERENCES train; ALTER TABLE trainstation ADD FOREIGN KEY (station_id) REFERENCES station ; CREATE TABLE station (id int not null PRIMARY KEY, name varchar(255) ); CREATE TABLE price (place_id int not null , to_station_id int not null, from_station_id int not null, value_price int not null) ALTER TABLE price ADD PRIMARY KEY (place_id ,to_station_id ,from_station_id); ALTER TABLE price ADD FOREIGN KEY (place_id) REFERENCES place; ALTER TABLE price ADD FOREIGN KEY (to_station_id) REFERENCES station; ALTER TABLE price ADD FOREIGN KEY (from_station_id) REFERENCES station; CREATE TABLE saled_place (place_id int not null, from_station_id int not null, to_station_id int not null) ALTER TABLE saled_place ADD PRIMARY KEY (place_id ,from_station_id,to_station_id); ALTER TABLE saled_place ADD FOREIGN KEY (place_id) REFERENCES place; ALTER TABLE saled_place ADD FOREIGN KEY (from_station_id) REFERENCES station; ALTER TABLE saled_place ADD FOREIGN KEY (to_station_id) REFERENCES station; Требуется создать запрос выводящий все варианты проезда из пункта А в пункт В (не более чем с одной пересадкой)отсортировать по возрастанию времени необходимого чтобы доехать из А в В |
harusha,
если вы приведете скриншот логических связей вашей DB, из средств типа erwin, думаю желающих ответить будет больше. Не думаю что кто-то спит и видит, как разобраться в структуре логических связях чужого запроса на создание. |
Вложений: 1
Я последовала вашему совету:-)
|
harusha,
Уже лучше. При рассмотрении логических связей, не обнаружил всей информации необходимой для описания графа целиком. Т. е. для каждой станции необходима информация: - Предыдущая станция - Последующая станция - Ветка (как в метро) Естественно это лучше организовать отдельной таблицей. И соответственно добавляется Таблица Веток. Это конечно добавляет избыточности, но упростит запрос. Пересечения можно выбирать при следующих условиях: - station-id не уникален - запрос типа http://forum.oszone.net/thread-95961.html , Вполне возможно что пересечения лучше оформить дополнительнойтаблицей Пересечения. -------------------------------------------------------------------------------------- Мораль такова - чем грамотнее описана структура данных в начале, тем меньше Вы будете "иб@тсо" с запросами в дальнейшем. Чем кривее структура данных - тем больше секса с кодом. Принцип сохранения, однако :) |
Я это очень хорошо понимаю:-)Но мне надо создать запрос именно с такой схемой:-)
Вот в чем вся проблема |
harusha,
Значит вы не описали какее-либо граничные условия, которые не видны из Erwin-схемы. Кстати приличные люди в Erwin вставляют комменты по каждому полю, т. к. базы бывают на порядки больше, а нужно работать а не в "Угадайку" играть. Вобще у меня есть подозрение что это не практическая задача, а тест. Т. к. судя по тому что в таблице Trainstation Цитата:
Вобще, понятие "пересадка" подразумевает что через одну станцию ходят несколько поездов и наоборот. |
Не буду открывать новую тему а отпишусь здесь:
Наличие: WinXP Prof SP2 MS SQL 2000 Developers Edition база с таблицами для менеджеров (не суть важна какая база) Действие: с помощью встроеннй утилиты SQL Query Analyzer выполняем запрос типа(вообщем-то не суть важно какой запрос): Цитата:
Цитата:
ОДНАКО вместо ожидаемой таблицы получаем сообщение: Цитата:
Замечу что при выполнении простого запроса типа: "select @@version" --> получаем ожидаемый результат с версией мускуля и всё такое Вопрос: как мне увидеть ожидаемую таблицу или на худой конец сообщение об ошибке.. а не банальное"The command(s) completed succefuly" ???? Предпринятые меры к исправлению: привинтил SP4 к MSSQL -- результат тот же.. |
Время: 03:19. |
Время: 03:19.
© OSzone.net 2001-