在一个查询中获取所有表/列及其数据类型firebird

Mav*_*ron 3 firebird database-metadata

我想查询以下内容:所有表及其列和数据类型

我到目前为止从http://www.firebirdfaq.org/faq174/得到了这个

select f.rdb$relation_name, f.rdb$field_name, f.rdb$field_source
from rdb$relation_fields f
join rdb$relations r on f.rdb$relation_name = r.rdb$relation_name
and r.rdb$view_blr is null 
and (r.rdb$system_flag is null or r.rdb$system_flag = 0)
order by 1, f.rdb$field_position
Run Code Online (Sandbox Code Playgroud)

我刚刚添加了上面的代码"f.rdb $ field_source"来向我展示该表上的信息,这应该允许我在此表中找到以下数据类型的数据RDB $ FIELDS

SELECT * from  RDB$FIELDS 
Run Code Online (Sandbox Code Playgroud)

我想在上面的查询中添加如下内容:

select f.rdb$relation_name, f.rdb$field_name, f.rdb$field_source
from rdb$relation_fields f
join rdb$relations r on f.rdb$relation_name = r.rdb$relation_name
and r.rdb$view_blr is null 
and (r.rdb$system_flag is null or r.rdb$system_flag = 0)
order by 1, f.rdb$field_position
Run Code Online (Sandbox Code Playgroud)

再加上以下需要发生:

select  a.RDB$FIELD_TYPE from RDB$FIELDS 
where RDB$FIELD_NAME is equal to the .rdb$field_source 
from rdb$relation_fields
Run Code Online (Sandbox Code Playgroud)

所以我有一个Tablename/Columnname/TypeofData的表.

我在SQL方面经验不多.我希望我的问题很清楚

And*_*jeŭ 5

只需加入RDB $ FIELDS表:

SELECT
  R.RDB$RELATION_NAME,
  R.RDB$FIELD_NAME,
  R.RDB$FIELD_SOURCE,
  F.RDB$FIELD_LENGTH,
  F.RDB$FIELD_TYPE,
  F.RDB$FIELD_SCALE,
  F.RDB$FIELD_SUB_TYPE
FROM
  RDB$RELATION_FIELDS R
  JOIN RDB$FIELDS F
    ON F.RDB$FIELD_NAME = R.RDB$FIELD_SOURCE
  JOIN RDB$RELATIONS RL
    ON RL.RDB$RELATION_NAME = R.RDB$RELATION_NAME
WHERE
  COALESCE(R.RDB$SYSTEM_FLAG, 0) = 0
  AND
  COALESCE(RL.RDB$SYSTEM_FLAG, 0) = 0
  AND
  RL.RDB$VIEW_BLR IS NULL
ORDER BY
  R.RDB$RELATION_NAME,
  R.RDB$FIELD_POSITION
Run Code Online (Sandbox Code Playgroud)