OVH Cloud OVH Cloud

Descriptif des vues

4 réponses
Avatar
ple_ain
Bonjour,

Je souhaiterai écrire une requête SQL permettant de récupérer différentes
informations d'une vue :
- le nom de colonne (nom réel du champ)
- l'alias
- la table d'origine du champ
Ce sont les informations des 3 premières colonnes qui s'affichent en
modification de vue dans Enterprise Manager.


Les différents essais que j'ai effectués me renvoient soit le nom de colonne
soit l'alias mais jamais les 2, et pas le nom de la table non plus.

Merci bien de m'indiquer quelques renseignements...

4 réponses

Avatar
SQLpro [MVP]
ple_ain a écrit :
Bonjour,

Je souhaiterai écrire une requête SQL permettant de récupérer différentes
informations d'une vue :
- le nom de colonne (nom réel du champ)
- l'alias
- la table d'origine du champ
Ce sont les informations des 3 premières colonnes qui s'affichent en
modification de vue dans Enterprise Manager.


Les différents essais que j'ai effectués me renvoient soit le nom de colonne
soit l'alias mais jamais les 2, et pas le nom de la table non plus.

Merci bien de m'indiquer quelques renseignements...







Vous devriez trouver votre bonheur avec cette requête :
SELECT *
FROM INFORMATION_SCHEMA.VIEWS V
INNER JOIN INFORMATION_SCHEMA.COLUMNS C
ON V.TABLE_SCHEMA = C.TABLE_SCHEMA
AND V.TABLE_NAME = C.TABLE_NAME

Mais pour ce qui est des alias de tables à l'intérieur de la définition
de la vue, ceux ci ne sont pas acessible car il ne peuvent pas être
utilisé en dehors de cette définition.

A +








--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
Avatar
ple_ain
Merci bien pour votre réponse.

Comment faire pour mettre en relation les noms d'alias récupérer par le SQL
que vous indiquez :
SELECT *
FROM INFORMATION_SCHEMA.VIEWS V
INNER JOIN INFORMATION_SCHEMA.COLUMNS C
ON V.TABLE_SCHEMA = C.TABLE_SCHEMA
AND V.TABLE_NAME = C.TABLE_NAME



avec les noms des champs et des tables utilisés par la vue récupérés par la
syntaxe :
SELECT * FROM information_schema.view_column_usage ?

Ce SQL renvoie tous les champs, y compris ceux qui ne s'affichent pas mais
sont utilisés uniquement pour les liens entre les tables.
ex : 30 champs utilisés par la vue pour l'affichage et les liens entre les
tables, mais seulement 10 champs affichés en résultats => nombre de lignes
renvoyées : 30
Peut-on extraire uniquement les champs affichés sans ceux nécessaires pour
les liens ?

Peut-être existe-t-il une autre méthode ?

Merci d'avance


"SQLpro [MVP]" a écrit dans le message de news:
euXq$$
ple_ain a écrit :
Bonjour,

Je souhaiterai écrire une requête SQL permettant de récupérer différentes
informations d'une vue :
- le nom de colonne (nom réel du champ)
- l'alias
- la table d'origine du champ
Ce sont les informations des 3 premières colonnes qui s'affichent en
modification de vue dans Enterprise Manager.


Les différents essais que j'ai effectués me renvoient soit le nom de
colonne soit l'alias mais jamais les 2, et pas le nom de la table non
plus.

Merci bien de m'indiquer quelques renseignements...







Vous devriez trouver votre bonheur avec cette requête :
SELECT *
FROM INFORMATION_SCHEMA.VIEWS V
INNER JOIN INFORMATION_SCHEMA.COLUMNS C
ON V.TABLE_SCHEMA = C.TABLE_SCHEMA
AND V.TABLE_NAME = C.TABLE_NAME

Mais pour ce qui est des alias de tables à l'intérieur de la définition de
la vue, ceux ci ne sont pas acessible car il ne peuvent pas être utilisé
en dehors de cette définition.

A +








--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************


Avatar
SQLpro [MVP]
ple_ain a écrit :
Merci bien pour votre réponse.

Comment faire pour mettre en relation les noms d'alias récupérer par le SQL
que vous indiquez :
SELECT *
FROM INFORMATION_SCHEMA.VIEWS V
INNER JOIN INFORMATION_SCHEMA.COLUMNS C
ON V.TABLE_SCHEMA = C.TABLE_SCHEMA
AND V.TABLE_NAME = C.TABLE_NAME



avec les noms des champs et des tables utilisés par la vue récupérés par la
syntaxe :
SELECT * FROM information_schema.view_column_usage ?

Ce SQL renvoie tous les champs, y compris ceux qui ne s'affichent pas mais
sont utilisés uniquement pour les liens entre les tables.
ex : 30 champs utilisés par la vue pour l'affichage et les liens entre les
tables, mais seulement 10 champs affichés en résultats => nombre de lignes
renvoyées : 30
Peut-on extraire uniquement les champs affichés sans ceux nécessaires pour
les liens ?



non


Peut-être existe-t-il une autre méthode ?



oui, INFORMATION_SCHEMA.COLUMNS lié à INFORMATION_SCHEMA.TABLES

A +




Merci d'avance


"SQLpro [MVP]" a écrit dans le message de news:
euXq$$
ple_ain a écrit :
Bonjour,

Je souhaiterai écrire une requête SQL permettant de récupérer différentes
informations d'une vue :
- le nom de colonne (nom réel du champ)
- l'alias
- la table d'origine du champ
Ce sont les informations des 3 premières colonnes qui s'affichent en
modification de vue dans Enterprise Manager.


Les différents essais que j'ai effectués me renvoient soit le nom de
colonne soit l'alias mais jamais les 2, et pas le nom de la table non
plus.

Merci bien de m'indiquer quelques renseignements...






Vous devriez trouver votre bonheur avec cette requête :
SELECT *
FROM INFORMATION_SCHEMA.VIEWS V
INNER JOIN INFORMATION_SCHEMA.COLUMNS C
ON V.TABLE_SCHEMA = C.TABLE_SCHEMA
AND V.TABLE_NAME = C.TABLE_NAME

Mais pour ce qui est des alias de tables à l'intérieur de la définition de
la vue, ceux ci ne sont pas acessible car il ne peuvent pas être utilisé
en dehors de cette définition.

A +




--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************








--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
Avatar
ple_ain
Merci pour les infos , malheureusement, je n'obtiens pas ce qu'il faut avec
le SQL suivant :
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
inner join INFORMATION_SCHEMA.TABLES
on
INFORMATION_SCHEMA.COLUMNS.TABLE_NAME=INFORMATION_SCHEMA.TABLES.TABLE_NAME

La syntaxe ci-dessus me renvoie, par exemple :
Table_Name Column_Name Ordinal_Position
Vue1 Alias1 1
Vue1 Alias2 2
Vue1 Alias3 3

Ce dont j'ai besoin, c'est :
Table_Name Column_Name Champ d'origine Table d'origine
Ordinal_Position
Vue1 Alias1 Champ10
TableA 1
Vue1 Alias2 Champ15
TableA 2
Vue1 Alias3 Champ3
TableB 3
Autre exemple :
Table_Name Column_Name Champ d'origine
Table d'origine Ordinal_Position
Vue_Facture Date de Facture DT_FACT
ENTETE_FACT 1
Vue_Facture N° de pièce NO_PIECE
ENTETE_FACT 2
Vue_Facture Nom Fournisseur LB_FOURNIS
FOURNISSEUR 3

Tout ceci dans le but de connaître le champ et la table d'origine des infos
d'une vue.

Merci pour toute aide...