SELECT COL.TABSCHEMA CONCAT '.' CONCAT COL.TABNAME AS TABLE_NAME
, COL.COLNO AS COLUMN_ID
, COL.COLNAME AS COLUMN_NAME
, CASE WHEN FK_CONSTRAINT_NAME IS NOT NULL THEN '>-' ELSE NULL END AS REL
, CONST.PRIMARY_TABLE
, CONST.PK_COLUMN_NAME
, CONST.NO
, CONST.FK_CONSTRAINT_NAME
FROM SYSCAT.COLUMNS COL
INNER JOIN SYSCAT.TABLES TAB ON
TAB.TABSCHEMA = COL.TABSCHEMA AND TAB.TABNAME = COL.TABNAME
LEFT OUTER JOIN
( SELECT REF.TABSCHEMA
, REF.TABNAME
, REF.CONSTNAME AS FK_CONSTRAINT_NAME
, KEY.COLNAME AS FK_COLUMN_NAME
, REF.REFTABSCHEMA CONCAT '.' CONCAT REF.REFTABNAME AS PRIMARY_TABLE
, KEYPK.COLNAME AS PK_COLUMN_NAME
, REF.PK_COLNAMES
, KEY.COLSEQ AS NO
FROM SYSCAT.REFERENCES REF
LEFT OUTER JOIN SYSCAT.KEYCOLUSE KEY ON
KEY.TABSCHEMA = REF.TABSCHEMA AND KEY.TABNAME = REF.TABNAME
AND KEY.CONSTNAME = REF.CONSTNAME
LEFT OUTER JOIN SYSCAT.KEYCOLUSE KEYPK ON
KEYPK.TABSCHEMA = REF.REFTABSCHEMA
AND KEYPK.TABNAME = REF.REFTABNAME
AND KEYPK.CONSTNAME = REF.REFKEYNAME
AND KEYPK.COLSEQ=KEY.COLSEQ
) CONST ON CONST.TABSCHEMA = COL.TABSCHEMA AND CONST.TABNAME = COL.TABNAME
AND CONST.FK_COLUMN_NAME = COL.COLNAME
WHERE TAB.TYPE = 'T'
AND TAB.TABSCHEMA NOT LIKE 'SYS%'
ORDER BY TABLE_NAME, COLUMN_ID
|