Я пытаюсь получить список полей, сгруппированных по отношениям, используя поля RDB $ и RDB $ Relation_Fields. Следит SQL:Выберите выделение с несколькими таблицами
select distinct
RDB$relation_Fields.RDB$relation_name as "Relation Name" ,
RDB$relation_Fields.RDB$field_name as "Field Name " ,
(select RDB$Fields.RDB$Field_Type as "Field Type"
from RDB$Fields
where RDB$Fields.rdb$Field_Name =
RDB$relation_Fields.RDB$Field_Name)
from
RDB$fields ,
RDB$relation_Fields
where
RDB$relation_Fields.RDB$relation_name = 'Database_Table' and
substring ( RDB$relation_name from 1 for 4) <> 'IDE$' and
substring ( RDB$relation_name from 1 for 4) <> 'MON$' substring ( RDB$relation_name from 1 for 4) <> 'RDB$'
order by
RDB$relation_name,
RDB$relation_Fields.rdb$field_name
я должен получить
Relation Name Field Name Field Type
------------- ---------- ----------
Database_Table Field1 TypeX
Database_Table Field2 TypeY
... ... ...
Вместо этого, я получаю
Relation Name Field Name Field Type
------------- ---------- ----------
Database_Table Field1 <null>
Database_Table Field2 <null>
... ... <null>
Пожалуйста, покажите мне правильный SQL.
Очень хороший ответ. Вы можете сократить этот запрос с помощью 'substring (rf.RDB $ ratio_name от 1 для 4), а не ('IDE $', 'MON $' 'RDB $')', чтобы сделать его еще более удобочитаемым. –
BTW: Предложение ON, вероятно, будет 'ON f.RDB $ FIELD_NAME = rf.RDB $ FIELD_SOURCE', см. Здесь: http://www.firebirdsql.org/file/community/conference-2014/pdf/22_tips_firebird_system_tables.pdf –
Спасибо за все (ответ и комментарии)! Присоединение сделало разницу. Thorsten comment 1 очень полезен, и комментарий 2 был фундаментальным. – user2383818