Sample Query
declare @TabName varchar(150) = 'TableName'
declare @ColName varchar(150) = 'ColumnName'
declare @Value varchar(150) = Specify Value
declare @sql varchar(MAX) = ''
Declare @Temp table ( Cnt int)
;With ReferencedKeys as
(
select o1.name as Referencing_Object_name, c1.name as referencing_column_Name
, o2.name as Referenced_Object_name , c2.name as Referenced_Column_Name
, s.name as Constraint_name
from sysforeignkeys fk
inner join sysobjects o1 on fk.fkeyid = o1.id
inner join sysobjects o2 on fk.rkeyid = o2.id
inner join syscolumns c1 on c1.id = o1.id and c1.colid = fk.fkey
inner join syscolumns c2 on c2.id = o2.id and c2.colid = fk.rkey
inner join sysobjects s on fk.constid = s.id
where o2.name = @TabName and c2.name = @ColName
)
select @sql += 'Select ' + referencing_column_Name + ' from ' + Referencing_Object_name
+ ' where ' + referencing_column_Name + '=' + @Value + ' union all '
from ReferencedKeys
select @sql = Substring(@sql,0,LEN(@sql) - 9)
insert into @Temp
exec (@sql)
select * from @Temp
--Idea got from SQL Authority.com
declare @TabName varchar(150) = 'TableName'
declare @ColName varchar(150) = 'ColumnName'
declare @Value varchar(150) = Specify Value
declare @sql varchar(MAX) = ''
Declare @Temp table ( Cnt int)
;With ReferencedKeys as
(
select o1.name as Referencing_Object_name, c1.name as referencing_column_Name
, o2.name as Referenced_Object_name , c2.name as Referenced_Column_Name
, s.name as Constraint_name
from sysforeignkeys fk
inner join sysobjects o1 on fk.fkeyid = o1.id
inner join sysobjects o2 on fk.rkeyid = o2.id
inner join syscolumns c1 on c1.id = o1.id and c1.colid = fk.fkey
inner join syscolumns c2 on c2.id = o2.id and c2.colid = fk.rkey
inner join sysobjects s on fk.constid = s.id
where o2.name = @TabName and c2.name = @ColName
)
select @sql += 'Select ' + referencing_column_Name + ' from ' + Referencing_Object_name
+ ' where ' + referencing_column_Name + '=' + @Value + ' union all '
from ReferencedKeys
select @sql = Substring(@sql,0,LEN(@sql) - 9)
insert into @Temp
exec (@sql)
select * from @Temp
--Idea got from SQL Authority.com
No comments:
Post a Comment