獲取

2016-04-29 36 views
3

我想查詢以下的所有表/列,並在一個查詢其數據類型火鳥:所有的表,用自己的列和數據類型獲取

我從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 
得到這個至今

我剛纔添加了上述代碼「f.rdb $ field_source」給我也上表中的信息,應該讓我找到列的數據類型之後在該表RDB $ FIELDS

SELECT * from RDB$FIELDS 

我想在上面的查詢是這樣的補充:

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 

加那麼下面需要做的:

select a.RDB$FIELD_TYPE from RDB$FIELDS 
where RDB$FIELD_NAME is equal to the .rdb$field_source 
from rdb$relation_fields 

所以我有表名/ COLUMNNAME/TypeofData一個表。

我在SQL方面沒有多少經驗。我希望我的問題是不夠清楚

回答

3

剛剛加入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