2016-07-29 2 views
0

SQL Server 2012를 사용하고 있습니다. 내가 가입 할 수있는 열이없는 두 테이블을 조인하고 싶습니다.이 테이블에 연결할 모든 테이블을 어떻게 찾을 수 있습니까? 테이블?두 테이블 간의 관계를 얻기 위해 가입해야하는 모든 테이블을 찾으십시오.

예를 들어 : 나는 table DTable A에 가입하고 내가 AB에 다음 CD에 마지막에 연결해야한다는 것을 할 필요가있다.

제 질문은 : 테이블별로 테이블을 검색하지 않고 데이터베이스에있는 수천 개의 테이블 중 테이블 BC을 찾을 수 있습니까?

고마워, 오핫

당신이 당신의 원인을 도울 수있는 몇 가지가있다, 그러나 대부분의 경우,이 직접적인 방법은 없습니다 당신이 당신의 데이터베이스가 어떻게 구성되어 있는지 알고 있어야하고
+1

샘플 테이블 데이터와 예상되는 결과를 추가하십시오. (모든 1000의 테이블에 대해 ... 아마도 디자인 문제!) – jarlh

+0

임의의 두 테이블 사이에 외래 키와 경로가 여러 개있는 것이 일반적으로 가능합니다. 따라서 테이블 사이의 "경로"를 찾는 방법은 없습니다. –

답변

0

테이블 목적. 또한 데이터베이스 디자인을 기반으로 직관적으로 답을 찾기가 어려울 수 있으며 데이터베이스 설계 지식이있는 사람으로부터 지침을 얻을 필요가 있습니다. 에 관계없이 : 당신의 테이블에

장치 필드 A & D : 당신은 그 테이블에 링크 된 다른 어떤 테이블을 결정하는 기본 필드 또는 테이블의 고유 한 필드를 볼 수 있습니다. 일반적으로 다른 테이블과 일치하는 방식으로 이름이 지정되며 테이블의 출처를 알 수 있습니다. 당신은 쉽게 전체 데이터베이스를 통해 테이블과 컬럼의 이름을 검색 적은 테이블로 검색 범위를 좁힐 전망을 INFORMATION_SCHEMA.TABLES를 사용 information_schema.column 수

INFORMATION_SCHEMA보기.

0

그 가정 :

  1. 당신은이 프로세스를 자동화 할
  2. 다음과 같이 당신은 당신이 진행해야

에 의존 할 수 FOREIGN KEY 제약 조건이 있습니다

  1. sys.foreign_keys를 쿼리하고 테이블 간의 연결을 포함하는 유향 그래프 구조를 만듭니다.
  2. 그런 다음 테이블 A에서 시작하여 D와 A에서 D 로의 경로를 찾으려고 그래프 검색 알고리즘을 구현하십시오.
  3. 경로를 찾았 으면 다음을 포함하는 동적 SQL을 쉽게 구성 할 수 있습니다. 경로의 모든 테이블을 조인합니다. JOIN의 ON 절을 구성하려면 sys.foreign_key_columns를 쿼리해야합니다.

자세한 내용을 알려면 알려주세요.

관련 문제