IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Oracle Discussion :

Requête qui retourne le détail d’une table [11g]


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Portugal

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2014
    Messages : 11
    Par défaut Requête qui retourne le détail d’une table
    Bonjour

    J’ai besoin de créer une requête qui me retourne le détail d'une table.

    exemple

    Table Owner Column_name Data_type Constraint_type Table_reference
    Client Toto ID Varchar2 P NULL
    Client Toto vehicule_id Varchar2 R vehicules
    Client Toto Age Number Null Null

    Le champ Table_reference est la table d'où vient la clé étrangère

    Pour l'instant je me base sur trois tables pour faire la requête.

    Table
    all_tab_columns a, all_constraints b, all_cons_columns c

    Merci de votre aide

  2. #2
    Membre Expert

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 296
    Par défaut
    Ces trois tables sont suffisantes. Pour l'instant quelle est ta requête?

  3. #3
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Portugal

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2014
    Messages : 11
    Par défaut Eureka
    Finalement j’ai réussi à la faire, si vous connaissez un moyen de la rendre plus performante n’hésitez pas à me le dire.

    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
     
    SELECT a.TABLE_NAME, a.OWNER, a.COLUMN_NAME, a.DATA_TYPE, c.CONSTRAINT_NAME ,d.CONSTRAINT_TYPE, dr.table_name ref_table_name
    FROM   all_tab_columns a  
           LEFT JOIN all_cons_columns c
                              ON a.TABLE_NAME = c.TABLE_NAME
                              AND a.OWNER = c.OWNER 
                              AND a.COLUMN_NAME = c.COLUMN_NAME
           LEFT JOIN all_constraints d
                              ON a.TABLE_NAME = d.TABLE_NAME
                              AND a.OWNER = d.OWNER 
                              AND c.CONSTRAINT_NAME = d.CONSTRAINT_NAME
           LEFT JOIN all_constraints dr
                              ON d.r_owner = dr.owner
                              AND d.r_constraint_name = dr.constraint_name
    WHERE a.table_name = 'TA_TABLE'
    AND a.OWNER = 'TON_OWNER';
    Merci

  4. #4
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Portugal

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2014
    Messages : 11
    Par défaut Oups
    J’ai un souci avec la table all_cons_columns elle me retourne des doublons, vous avez une idée de comment éliminer les doublons ?

    Exemple

    Owner Constrain_name Table_name Column_name Position
    TOTO PK_CLIENT_ID ACHAT ID 1
    TOTO SYS_C001234 ACHAT ID (null)

    Merci

  5. #5
    Membre actif
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2015
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2015
    Messages : 38
    Par défaut
    de quels doublons parlez-vous? de la table_name? column_name?
    je ne vois pas de doublons puisque se sont des informations différentes.

  6. #6
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Portugal

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2014
    Messages : 11
    Par défaut dernière version
    Voici la dernière version de ma requête, j’avais de doublon car je n’avais pas de filtre sur les constraint.

    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
    32
    33
    34
    35
    36
    37
    38
     
    SELECT a.OWNER,
                a.TABLE_NAME,
                a.COLUMN_NAME,
                a.DATA_TYPE, 
                a.DATA_LENGTH,
                '('||a.DATA_PRECISION ||','|| a.DATA_SCALE||')' DATA_PRECISION,
                DECODE (a.NULLABLE, 'N', 'NOT NULL',NULL),
                c.CONSTRAINT_NAME,
                DECODE (d.CONSTRAINT_TYPE, 'R', 'FOREIGN KEY',
                                                               'P', 'PRIMARY KEY',
                                                                                 NULL),
           dr.CONSTRAINT_NAME  REFERENCES_CONSTRAINT,
           dr.OWNER  REF_OWNER,
           dr.table_name REFERENCES_TAB,
           cr.COLUMN_NAME REFERENCES_COLUMN       
    FROM   all_tab_columns a  
           LEFT JOIN all_cons_columns c
                              ON a.TABLE_NAME = c.TABLE_NAME
                              AND a.OWNER = c.OWNER 
                              AND a.COLUMN_NAME = c.COLUMN_NAME
                              AND c.POSITION is not null
           LEFT JOIN all_constraints d
                              ON a.TABLE_NAME = d.TABLE_NAME
                              AND a.OWNER = d.OWNER 
                              AND c.CONSTRAINT_NAME = d.CONSTRAINT_NAME
                              AND d.CONSTRAINT_TYPE != 'C'
           LEFT JOIN all_constraints dr
                              ON d.r_owner = dr.owner
                              AND d.r_constraint_name = dr.constraint_name
                              AND d.CONSTRAINT_TYPE != 'C'   
           LEFT JOIN all_cons_columns cr
                              ON dr.TABLE_NAME = cr.TABLE_NAME
                              AND a.OWNER = cr.OWNER 
                              AND dr.CONSTRAINT_NAME = cr.CONSTRAINT_NAME
                              AND cr.POSITION is not null                          
    WHERE a.table_name = 'TA_TABLE'
    AND a.OWNER = 'TON_OWNER';

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Optimiser le temps de traitement d'une simple requête qui retourne 800 000 lignes.
    Par kamnouz dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 17/06/2011, 18h37
  2. requète qui retourne la derniere ligne d'un ensemble de tuple
    Par Stouille33 dans le forum Développement
    Réponses: 4
    Dernier message: 14/11/2008, 09h15
  3. Requête qui retourne la somme totale de durées
    Par fayred dans le forum Requêtes
    Réponses: 3
    Dernier message: 04/01/2008, 16h21
  4. requête qui ne modifie pas les tables
    Par bellus33cg dans le forum Sécurité
    Réponses: 2
    Dernier message: 24/12/2007, 11h39
  5. [VB.Net]Une fenêtre qui montre le contenu d’une table.
    Par yassin101 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 10/11/2006, 21h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo