Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2005.01.09;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.037 c
14-1103709995
YurikGL
2004-12-22 13:06
2005.01.09
У кого есть HP 1000?


6-1098342701
AngelFire
2004-10-21 11:11
2005.01.09
Получение локального IP-адреса


9-1095057364
BRemB
2004-09-13 10:36
2005.01.09
Определение координат точки


4-1100890082
Japp
2004-11-19 21:48
2005.01.09
Как получить информацию о типе открытого Хендла?


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





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский