2009-03-13 18 views
0

これら2つのクエリを結合して、1つの結果内のすべてのテーブル情報を取得するにはどうすればよいですか?列情報を選択し、制約情報で結合する

A - すべての列を取得し、そのデータ型

select COLUMN_NAME, DATA_TYPE from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = 'Customers' 

Bテーブルのお客様に属する - テーブルのお客様

SELECT  KCU1.CONSTRAINT_NAME AS 'ConstraintName', KCU1.COLUMN_NAME AS 'ColumnName', KCU2.TABLE_NAME AS 'ForeignTableName', 
          KCU2.COLUMN_NAME AS 'ForeignColumnName' 
    FROM   INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS AS RC INNER JOIN 
          INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS KCU1 ON KCU1.CONSTRAINT_CATALOG = RC.CONSTRAINT_CATALOG AND 
          KCU1.CONSTRAINT_SCHEMA = RC.CONSTRAINT_SCHEMA AND KCU1.CONSTRAINT_NAME = RC.CONSTRAINT_NAME INNER JOIN 
          INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS KCU2 ON KCU2.CONSTRAINT_CATALOG = RC.UNIQUE_CONSTRAINT_CATALOG AND 
          KCU2.CONSTRAINT_SCHEMA = RC.UNIQUE_CONSTRAINT_SCHEMA AND KCU2.CONSTRAINT_NAME = RC.UNIQUE_CONSTRAINT_NAME AND 
          KCU2.ORDINAL_POSITION = KCU1.ORDINAL_POSITION AND KCU1.TABLE_NAME = 'Customers' 

上のすべての制約を取得します。私が欲しい結果がリストであります他のテーブルへの外部キー接続を持つものは、そのように表示する必要があります。 (私の貧弱な用語で申し訳ありません)

答えて

0

Ah!とった !ここにあります:

SELECT  CL.COLUMN_NAME AS 'ColumnName', CL.DATA_TYPE AS 'DataType', CL.CHARACTER_MAXIMUM_LENGTH AS 'MaxLength', 
         KCU1.CONSTRAINT_NAME AS 'ConstraintName', KCU2.TABLE_NAME AS 'ForeignTableName', KCU2.COLUMN_NAME AS 'ForeignColumnName' 
FROM   INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS AS RC INNER JOIN 
         INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS KCU1 ON KCU1.CONSTRAINT_CATALOG = RC.CONSTRAINT_CATALOG AND 
         KCU1.CONSTRAINT_SCHEMA = RC.CONSTRAINT_SCHEMA AND KCU1.CONSTRAINT_NAME = RC.CONSTRAINT_NAME INNER JOIN 
         INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS KCU2 ON KCU2.CONSTRAINT_CATALOG = RC.UNIQUE_CONSTRAINT_CATALOG AND 
         KCU2.CONSTRAINT_SCHEMA = RC.UNIQUE_CONSTRAINT_SCHEMA AND KCU2.CONSTRAINT_NAME = RC.UNIQUE_CONSTRAINT_NAME AND 
         KCU2.ORDINAL_POSITION = KCU1.ORDINAL_POSITION AND KCU1.TABLE_NAME = 'Customers' RIGHT OUTER JOIN 
         INFORMATION_SCHEMA.COLUMNS AS CL ON KCU1.TABLE_NAME = CL.TABLE_NAME AND KCU1.COLUMN_NAME = CL.COLUMN_NAME 
WHERE  (CL.TABLE_NAME = N'Customers') 
ORDER BY CL.ORDINAL_POSITION 
関連する問題