I have a database that was given to us without constraints, no PK or FK.
I'm trying to reverse engineer to find out connections between tables. In order to do so my approach is to create a list of all columns with the same name and data type. So I created this query:
SELECT schema_name(tab.schema_id) AS schema_name
,tab.name AS table_name
,col.name AS column_name
,t.name AS data_type
,SUM([Partitions].[rows]) AS [TotalRowCount]
FROM sys.tables AS tab
INNER JOIN sys.columns AS col ON tab.object_id = col.object_id
LEFT JOIN sys.types AS t ON col.user_type_id = t.user_type_id
JOIN sys.partitions AS [Partitions] ON tab.[object_id] = [Partitions].[object_id]
AND [Partitions].index_id IN (
0
,1
)
GROUP BY schema_name(tab.schema_id)
,tab.name
,col.name
,t.name
ORDER BY col.name
As result I have this:
schema_name | table_name | column_name | data_type | TotalRowCount |
---|---|---|---|---|
H513WEB | ALPRETAR | IDREVI | numeric | 1439 |
H513WEB | ALPRETAR | IDREVN | numeric | 1439 |
H513WEB | CPDOENP | IDRLPP | numeric | 4156 |
H513WEB | ALPRETAR | IDRNG | numeric | 1439 |
H513WEB | FAAFACP | IDROLDEBCOM | numeric | 100541 |
H513WEB | FAAFACP_OLD | IDROLDEBCOM | numeric | 1513 |
H513WEB | CACPTAP | IDROLE | numeric | 22109 |
H513WEB | CARROLP | IDROLE | numeric | 5 |
H513WEB | FAENTFP | IDROLE | numeric | 26084 |
H513WEB | CACPTCP | IDRUBRIQUE | numeric | 48 |
H513WEB | CACPTRP | IDRUBRIQUE | numeric | 12942 |
H513WEB | CAIMDCP | IDRUBRIQUE | numeric | 6637 |
H513WEB | CAIMGIP | IDRUBRIQUE | numeric | 5 |
H513WEB | CAIMRSP | IDRUBRIQUE | numeric | 40 |
H513WEB | CAOREXP | IDRUBRIQUE | numeric | 5 |
H513WEB | CAPLARP | IDRUBRIQUE | numeric | 3 |
H513WEB | CARERUP | IDRUBRIQUE | numeric | 175 |
H513WEB | CARUBRP | IDRUBRIQUE | numeric | 312 |
but I only would like to list rows that have the same column_name
and data_type
and the result should look like this:
schema_name | table_name | column_name | data_type | TotalRowCount |
---|---|---|---|---|
H513WEB | FAAFACP | IDROLDEBCOM | numeric | 100541 |
H513WEB | FAAFACP_OLD | IDROLDEBCOM | numeric | 1513 |
H513WEB | CACPTAP | IDROLE | numeric | 22109 |
H513WEB | CARROLP | IDROLE | numeric | 5 |
H513WEB | FAENTFP | IDROLE | numeric | 26084 |
H513WEB | CACPTCP | IDRUBRIQUE | numeric | 48 |
H513WEB | CACPTRP | IDRUBRIQUE | numeric | 12942 |
H513WEB | CAIMDCP | IDRUBRIQUE | numeric | 6637 |
H513WEB | CAIMGIP | IDRUBRIQUE | numeric | 5 |
H513WEB | CAIMRSP | IDRUBRIQUE | numeric | 40 |
H513WEB | CAOREXP | IDRUBRIQUE | numeric | 5 |
H513WEB | CAPLARP | IDRUBRIQUE | numeric | 3 |
H513WEB | CARERUP | IDRUBRIQUE | numeric | 175 |
H513WEB | CARUBRP | IDRUBRIQUE | numeric | 312 |
How to do that?