2016-11-11 1 views
0

외래 키 목록이 있습니다. 나는이 FK 's가 가리키는 테이블과 실제 키가 가리키는 테이블을 찾고 싶습니다.SQL Server에서 참조 테이블 가져 오기

나는 FK의 목록과 같이있어 :

columnName0, columnName1, columnName2 

외래 키 참조

  • columnName0 참조 table0.idTable0
  • columnName1 참조 table1.idTable1
  • columnName2 참조 table2.idTable2

샘플 테이블 :

Table0 :

idTable0, PK 
name 

:

idTable1, PK 
age 

표 2 :

idTable2, PK 
createdOn 

샘플 결과 :

| column  | referenced_column | referenced_table | 
|-------------|-------------------|------------------| 
| columnName0 | idTable0   | table0   | 
| columnName1 | idTable1   | table1   | 
| columnName2 | idTable2   | table2   | 

내가 이런 식으로 MySQL의에서 무언가 번역하기 위해 노력하고있어 : 중복 마크에 대한

SELECT DISTINCT 
    COLUMN_NAME AS column, 
    REFERENCED_COLUMN_NAME AS referenced_column, 
    REFERENCED_TABLE_NAME AS referenced_table 
FROM 
    INFORMATION_SCHEMA.KEY_COLUMN_USAGE 
WHERE 
    COLUMN_NAME IN (?); 

참고 내가 갈거야

스트레이트 업 쿼리 (저장 프로 시저 없음)를 사용해야합니다.

쿼리를 Knex.js 코드로 변환합니다.이 코드는 저장 프로 시저와 잘 작동하지 않습니다.

+0

@Tanner는, 그래서 실제 쿼리로의 –

+0

가능한 중복이 필요됩니다 [방법 SQL 서버에서 테이블의 모든 종속성을 찾으십시오] (http://stackoverflow.com/questions/22005698/how-to-find-all-the-dependencies-of-a-table-in-sql-server) – Tanner

+0

추가됨 왜 복제본이 아닌지에 대한 설명 –

답변

1

정확히 원하는지 확실하지 않지만이 쿼리는 모든 FK를 이름, 키가 참조하는 테이블과 열, 참조 된 테이블과 열로 반환합니다. 당신은 적절한 추가 할 수있는 당신이 원하는대로 BY 절 필터 또는 ORDER : 내 코드에서 결과를 사용하고

SELECT fk.[name], OBJECT_NAME(fk.parent_object_id) AS TableName, c.[name] AS ColumnName, OBJECT_NAME(fk.referenced_object_id) AS ReferencedTable, rc.[name] AS ReferencedColumnName 
FROM sys.foreign_keys fk 
INNER JOIN sys.foreign_key_columns kc ON fk.object_id = kc.constraint_object_id 
INNER JOIN sys.columns c ON kc.parent_object_id = c.object_id AND kc.parent_column_id = c.column_id 
INNER JOIN sys.columns rc ON kc.referenced_object_id = rc.object_id AND kc.referenced_column_id = rc.column_id 
관련 문제