Выберите информацию столбца и объедините с информацией об ограничениях - PullRequest
0 голосов
/ 13 марта 2009

Как я могу объединить эти 2 запроса, чтобы получить всю информацию о таблице в одном результате?

A - Получить все столбцы и их типы данных, относящиеся к таблице Customers

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'

Результат, который я хочу получить, - это список всех столбцов, и те, которые имеют связь с внешним ключом к другой таблице, должны обозначаться как таковые. (Извините за мою плохую терминологию)

1 Ответ

0 голосов
/ 13 марта 2009

Ах! Понял ! Вот оно:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...