SELECT REFFK.TABLE
, FOREIGN_KEYS + COALESCE(REFERENCES,0) AS RELATIONSHIPS
, FOREIGN_KEYS
, COALESCE(REFERENCES,0) AS REFERENCES
, REFERENCED_TABLES + COALESCE(REFERENCING_TABLES,0) AS RELATED_TABLES
, REFERENCED_TABLES
, COALESCE(REFERENCING_TABLES,0) AS REFERENCING_TABLES
FROM
( SELECT TABSCHEMA CONCAT '.' CONCAT TABNAME AS TABLE
, COUNT(CONSTNAME) AS FOREIGN_KEYS
, COUNT(DISTINCT REFTABSCHEMA CONCAT '.' CONCAT REFTABNAME)
AS REFERENCED_TABLES
FROM SYSCAT.REFERENCES
GROUP BY TABSCHEMA CONCAT '.' CONCAT TABNAME
) REFFK
LEFT OUTER JOIN
( SELECT DISTINCT REFTABSCHEMA CONCAT '.' CONCAT REFTABNAME AS TABLE
, COUNT(*) AS REFERENCES
, COUNT(DISTINCT TABSCHEMA CONCAT '.' CONCAT TABNAME)
AS REFERENCING_TABLES
FROM SYSCAT.REFERENCES
GROUP BY REFTABSCHEMA CONCAT '.' CONCAT REFTABNAME
) REFBYFK ON REFFK.TABLE = REFBYFK.TABLE
ORDER BY FOREIGN_KEYS + COALESCE(REFERENCES,0) DESC
|