Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.01.09;
Скачать: CL | DM;

Вниз

Почему-то не работает запрос?   Найти похожие ветки 

 
Iova   (2004-12-09 08:18) [0]

Помогите пожалуйста составить запрос, который бы выводил связи между таблицами. Я составил запрос:

SELECT
       F.RDB$RELATION_NAME,
R1.RDB$FIELD_NAME,
T.RDB$RELATION_NAME,
R2.RDB$FIELD_NAME
FROM
RDB$RELATION_CONSTRAINTS F,
RDB$RELATION_CONSTRAINTS T,
RDB$REF_CONSTRAINTS C,
RDB$INDEX_SEGMENTS I1,
RDB$INDEX_SEGMENTS I2,
RDB$RELATION_FIELDS R1,
RDB$RELATION_FIELDS R2
WHERE
C.RDB$CONSTRAINT_NAME = F.RDB$CONSTRAINT_NAME AND
T.RDB$CONSTRAINT_NAME = F.RDB$CONSTRAINT_NAME AND
T.RDB$CONSTRAINT_NAME = C.RDB$CONST_NAME_UQ AND
F.RDB$CONSTRAINT_TYPE = "FOREIGN KEY" AND
T.RDB$CONSTRAINT_TYPE = "PRIMARY KEY" AND
F.RDB$INDEX_NAME = I1.RDB$INDEX_NAME AND
T.RDB$INDEX_NAME = I2.RDB$INDEX_NAME AND
R1.RDB$FIELD_NAME = I1.RDB$FIELD_NAME AND
R2.RDB$FIELD_NAME = I2.RDB$FIELD_NAME AND
F.RDB$RELATION_NAME = R1.RDB$RELATION_NAME AND
T.RDB$RELATION_NAME = R2.RDB$RELATION_NAME

Запрос выполняется, но не выдает данных.
Запросы я составлял используя статью:

www.ibase.ru/devinfo/sysqry.htm


 
Zacho ©   (2004-12-09 09:12) [1]

Iova   (09.12.04 8:18)

Честно говоря, разбираться в твоём запросе лень, но вот тебе запрос который выдаёт:
имя таблицы, имя foreign key, имя таблицы на к-рую ссылается этот ключ, имя primary key или unique в этой таблице.
Думаю, сможешь адаптировать к своим нуждам

SELECT
 RC.RDB$RELATION_NAME,
 RC.RDB$CONSTRAINT_NAME,
 RC1.RDB$RELATION_NAME,
 RF.RDB$CONST_NAME_UQ
FROM
RDB$RELATION_CONSTRAINTS RC

JOIN RDB$REF_CONSTRAINTS RF
ON RF.RDB$CONSTRAINT_NAME=RC.RDB$CONSTRAINT_NAME

JOIN RDB$RELATION_CONSTRAINTS RC1
ON RC1.RDB$CONSTRAINT_NAME=RC.RDB$CONSTRAINT_NAME

WHERE RC.RDB$CONSTRAINT_TYPE="FOREIGN KEY"


 
Iova   (2004-12-09 10:08) [2]

Вообще-то мне хотелось бы еще узнать поля по которым связываются таблицы. Вот это как раз у меня и не получается.
Может есть какой-нибудь такой же запрос, но который бы ыдавал бы и поля, по которым связаны эти таблицы.
Help please!


 
Iova   (2004-12-09 10:29) [3]

Все спасибо я нашел ошибку. Я случайно написал лишнюю строку 16.
Ну а если кому интересно то вот конечный запрос

SELECT
       F.RDB$RELATION_NAME,
R1.RDB$FIELD_NAME,
T.RDB$RELATION_NAME,
R2.RDB$FIELD_NAME
FROM
RDB$RELATION_CONSTRAINTS F,
RDB$RELATION_CONSTRAINTS T,
RDB$REF_CONSTRAINTS C,
RDB$INDEX_SEGMENTS I1,
RDB$INDEX_SEGMENTS I2,
RDB$RELATION_FIELDS R1,
RDB$RELATION_FIELDS R2
WHERE
C.RDB$CONSTRAINT_NAME = F.RDB$CONSTRAINT_NAME AND
T.RDB$CONSTRAINT_NAME = C.RDB$CONST_NAME_UQ AND
F.RDB$CONSTRAINT_TYPE = "FOREIGN KEY" AND
T.RDB$CONSTRAINT_TYPE = "PRIMARY KEY" AND
F.RDB$INDEX_NAME = I1.RDB$INDEX_NAME AND
T.RDB$INDEX_NAME = I2.RDB$INDEX_NAME AND
R1.RDB$FIELD_NAME = I1.RDB$FIELD_NAME AND
R2.RDB$FIELD_NAME = I2.RDB$FIELD_NAME AND
F.RDB$RELATION_NAME = R1.RDB$RELATION_NAME AND
T.RDB$RELATION_NAME = R2.RDB$RELATION_NAME

Данный запрос выдает список таблиц и полей
1 Название таблицы связанной по "FOREIGN KEY"
2 Поле связывающее 1
3 Название таблицы связанной по "PRIMARY KEY"
4 Поле связывающее 3

>Zacho
Спасибо.
Кстати мне понравился твой запрос.
Может быть я модифицирую свой, используя твой запрос.



Страницы: 1 вся ветка

Текущий архив: 2005.01.09;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.037 c
11-1085307130
Wiz@rd
2004-05-23 14:12
2005.01.09
KOL ActiveX


1-1103612663
Mate_ru
2004-12-21 10:04
2005.01.09
снова Image


1-1103727686
Gennadiy
2004-12-22 18:01
2005.01.09
В Ексель не в формуле не передаются знак ";"


1-1103710048
Руслана
2004-12-22 13:07
2005.01.09
Подскажите как грамотно решить следующую задачу


14-1102599038
Постоянный посетитель
2004-12-09 16:30
2005.01.09
Приокрывая занавес или что же на самом деле стоит за error 500