Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » MSFT SQL Server - запросы в Microsoft Sql Server

Ответить
Настройки темы
MSFT SQL Server - запросы в Microsoft Sql Server

Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


плз помогите с написанием запроса-горит)))
Имеется база данных Железной дороги
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;



Требуется создать запрос выводящий все варианты проезда из пункта А в пункт В (не более чем с одной пересадкой)отсортировать по возрастанию времени необходимого чтобы доехать из А в В

Отправлено: 00:15, 18-12-2007

 

Аватара для kim-aa

Назгул


Moderator


Сообщения: 2624
Благодарности: 342

Профиль | Отправить PM | Цитировать


harusha,

если вы приведете скриншот логических связей вашей DB, из средств типа erwin, думаю желающих ответить будет больше.
Не думаю что кто-то спит и видит, как разобраться в структуре логических связях чужого запроса на создание.

-------
Мы овладеваем более высоким стилем спора. Спор без фактов. Спор на темпераменте. Спор, переходящий от голословного утверждения на личность партнера. (c)Жванецкий


Отправлено: 09:52, 18-12-2007 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


Вложения
Тип файла: rar trainstation.rar
(57.2 Kb, 6 просмотров)

Я последовала вашему совету:-)

Отправлено: 19:34, 18-12-2007 | #3


Аватара для kim-aa

Назгул


Moderator


Сообщения: 2624
Благодарности: 342

Профиль | Отправить PM | Цитировать


harusha,
Уже лучше.

При рассмотрении логических связей, не обнаружил всей информации необходимой для описания графа целиком.

Т. е. для каждой станции необходима информация:
- Предыдущая станция
- Последующая станция
- Ветка (как в метро)

Естественно это лучше организовать отдельной таблицей.
И соответственно добавляется Таблица Веток.
Это конечно добавляет избыточности, но упростит запрос.

Пересечения можно выбирать при следующих условиях:
- station-id не уникален
- запрос типа http://forum.oszone.net/thread-95961.html ,

Вполне возможно что пересечения лучше оформить дополнительнойтаблицей Пересечения.
--------------------------------------------------------------------------------------
Мораль такова - чем грамотнее описана структура данных в начале, тем меньше Вы будете "иб@тсо" с запросами в дальнейшем.
Чем кривее структура данных - тем больше секса с кодом.

Принцип сохранения, однако

-------
Мы овладеваем более высоким стилем спора. Спор без фактов. Спор на темпераменте. Спор, переходящий от голословного утверждения на личность партнера. (c)Жванецкий


Последний раз редактировалось kim-aa, 19-12-2007 в 09:45.


Отправлено: 09:23, 19-12-2007 | #4


Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


Я это очень хорошо понимаю:-)Но мне надо создать запрос именно с такой схемой:-)
Вот в чем вся проблема

Отправлено: 01:50, 20-12-2007 | #5


Аватара для kim-aa

Назгул


Moderator


Сообщения: 2624
Благодарности: 342

Профиль | Отправить PM | Цитировать


harusha,
Значит вы не описали какее-либо граничные условия, которые не видны из Erwin-схемы.
Кстати приличные люди в Erwin вставляют комменты по каждому полю, т. к. базы бывают на порядки больше, а нужно работать а не в "Угадайку" играть.

Вобще у меня есть подозрение что это не практическая задача, а тест.

Т. к. судя по тому что в таблице Trainstation
Цитата harusha:
ADD PRIMARY KEY (train_id, station_id); »
т. е. комбинация "станция+поезд" уникальна, чего в живой природе не бывает.

Вобще, понятие "пересадка" подразумевает что через одну станцию ходят несколько поездов и наоборот.

-------
Мы овладеваем более высоким стилем спора. Спор без фактов. Спор на темпераменте. Спор, переходящий от голословного утверждения на личность партнера. (c)Жванецкий


Последний раз редактировалось kim-aa, 21-12-2007 в 10:46.


Отправлено: 09:04, 20-12-2007 | #6


Новый участник


Сообщения: 7
Благодарности: 0

Профиль | Отправить PM | Цитировать


Не буду открывать новую тему а отпишусь здесь:

Наличие:
WinXP Prof SP2
MS SQL 2000 Developers Edition
база с таблицами для менеджеров (не суть важна какая база)

Действие:
с помощью встроеннй утилиты SQL Query Analyzer выполняем запрос типа(вообщем-то не суть важно какой запрос):
Цитата:
begin
set nocount on
create table #FullIndex(
table_name sysname,
index_name sysname,
index_description varchar(210),
index_keys nvarchar(2078)
)

declare @TableName sysname
declare @IndexName sysname
declare @index_keys nvarchar(2078)
declare @sql nvarchar(4000)

declare c cursor for
select
name
from sysobjects
where name like N'tbl_%'
and xtype = N'U'
order by name

open c

while 1 = 1
begin
fetch next from c into @TableName

if @@fetch_status = -1 break
if @@fetch_status = -2 continue

create table #Index(
index_name sysname,
index_description varchar(210),
index_keys nvarchar(2078)
)

insert into #Index
exec sp_helpindex @TableName

insert into #FullIndex (table_name, index_name, index_description, index_keys)
select @TableName, index_name, index_description, index_keys
from #Index

drop table #Index
end
close c
deallocate c

declare c cursor for
select table_name, index_name from #FullIndex
where index_description like '%nonclustered%'
and index_description like '%unique%'
order by table_name

open c

while 1 = 1
begin
fetch next from c into @TableName, @IndexName

if @@fetch_status = -1 break
if @@fetch_status = -2 continue

print N' drop index [' + @TableName + N'].[' + @IndexName + N']'
end
close c
deallocate c


declare c cursor for
select table_name, index_name, index_keys from #FullIndex
where index_description like '%nonclustered%'
and index_description like '%unique%'
order by table_name

open c

while 1 = 1
begin
fetch next from c into @TableName, @IndexName, @index_keys

if @@fetch_status = -1 break
if @@fetch_status = -2 continue

print N' create unique index [' + @IndexName + N'] on [' + @TableName + N'] (' + @index_keys + N') '
end
close c
deallocate c

drop table #FullIndex
set nocount off
end
ожидаем во вкладке"Messages" получить что-то типа:
Цитата:
drop index [tb1_AdminUnit]_[UIX_tbl_AdminUnit_Name]
...
...
create unique index [UIX_tbl_AdminUnit_Name] on [tbl_AdminUnit] (Name, IsGroup)
...
...

ОДНАКО вместо ожидаемой таблицы получаем сообщение:
Цитата:
The command(s) completed succefuly


Замечу что при выполнении простого запроса типа: "select @@version"
--> получаем ожидаемый результат с версией мускуля и всё такое

Вопрос: как мне увидеть ожидаемую таблицу или на худой конец сообщение об ошибке.. а не банальное"The command(s) completed succefuly" ????

Предпринятые меры к исправлению:
привинтил SP4 к MSSQL -- результат тот же..

Отправлено: 14:49, 23-03-2008 | #7



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » MSFT SQL Server - запросы в Microsoft Sql Server

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
MSFT SQL Server - Где можно научиться работать на Microsoft SQL Server? ALI Программирование и базы данных 5 30-12-2008 04:10
MSFT SQL Server - Перенос Microsoft SQL Server bloodshed Программирование и базы данных 2 19-09-2006 16:58
Delphi - Связка Delphi и Microsoft SQL Server programmist72 Программирование и базы данных 6 09-08-2006 20:37
MSFT SQL Server - Резервная копия в Microsoft SQL Server 2000 на сетевые диски shark21 Программирование и базы данных 3 29-05-2006 09:33
IPFW и Microsoft SQL Server Zuka Общий по FreeBSD 7 01-12-2005 11:04




 
Переход