Главная страница
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.024 c
6-1098342701
AngelFire
2004-10-21 11:11
2005.01.09
Получение локального IP-адреса


14-1103544368
Чеширский_Кот
2004-12-20 15:06
2005.01.09
Никого еще не достала?..


11-1085045840
dimon1979
2004-05-20 13:37
2005.01.09
Добавление нового KOL-компонента


14-1103725205
syte_ser78
2004-12-22 17:20
2005.01.09
как зовется компонент?


3-1102352248
Сергей_26
2004-12-06 19:57
2005.01.09
Вставка картинки в graphic поле таблици