Bonjour,

Pour obtenir les caractérististiques de toutes les colonnes de toutes les tables d'une base de données, j'ai commencé la requête suivante:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 
SELECT 
	TABLES.NAME AS [TABLE],
	COLUMNS.NAME [COLUMN], 
	UPPER(TYPES.NAME) [TYPE],
	COLUMNS.max_length [LENGTH],
	CASE COLUMNS.is_nullable
		WHEN 1 THEN 'YES'
		ELSE 'NO'
	END AS NULLABLE,
	CASE COLUMNS.is_identity
		WHEN 1 THEN 'YES'
		ELSE 'NO'
	END AS [IDENTITY],
	CASE COLUMNS.is_computed
		WHEN 1 THEN 'YES'
		ELSE 'NO'
	END AS COMPUTED,
	REPLACE(REPLACE(REPLACE(REPLACE(COMPCOL.definition, ')', ''), '(', ''), '[', ''), ']', '') FORMULA,
	REPLACE(REPLACE(REPLACE(REPLACE(CHK.definition, ')', ''), '(', ''), '[', ''), ']', '') [CHECK_CONSTRAINT],
	REPLACE(REPLACE(DF.definition, '(', ''), ')', '') [DEFAULT]
FROM sys.tables TABLES
LEFT JOIN sys.columns COLUMNS ON TABLES.object_id = COLUMNS.object_id
LEFT JOIN sys.types TYPES ON TYPES.user_type_id = COLUMNS.user_type_id
LEFT JOIN sys.computed_columns COMPCOL ON COMPCOL.column_id = COLUMNS.column_id
										AND COMPCOL.object_id = TABLES.object_id
LEFT JOIN sys.check_constraints CHK ON CHK.parent_object_id = TABLES.object_id
									AND CHK.parent_column_id = COLUMNS.column_id
LEFT JOIN sys.default_constraints DF ON DF.parent_object_id = TABLES.object_id
									AND DF.parent_column_id = COLUMNS.column_id
ORDER BY TABLES.NAME, COLUMNS.column_id
Maintenant je souhaiterais, pour chaque colonne, obtenir s'il y a lieu la table et la colonne référencées. Pour cela j'ai donc rajouté un:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
LEFT JOIN sys.foreign_key_columns
mais je ne parviens pas à trouver les relations correctes pour obtenir le bon résultat.

Quelqu'un peut m'aider ?