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

PL/SQL Oracle Discussion :

Vérifier l'existence de deux colonnes dans une table


Sujet :

PL/SQL Oracle

  1. #1
    Membre régulier
    Avatar de unix27
    Inscrit en
    Septembre 2003
    Messages
    338
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2003
    Messages : 338
    Points : 106
    Points
    106
    Par défaut Vérifier l'existence de deux colonnes dans une table
    Bonjour,
    je souhaite avoir les tables qui contiennent par exemple colonne col1 et col2 Donc je fais cette requête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT  table_name
    FROM user_tab_columns 
    WHERE column_name ='col1' AND column_name ='col2'
    mais cela ne me retourne rien même s'il a des tables dans ma BD qui doivent normalement être retournées.

    des idées sur ça?
    Merci

  2. #2
    Membre expert

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2012
    Messages
    612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Juin 2012
    Messages : 612
    Points : 3 066
    Points
    3 066
    Par défaut
    Bonjour,

    Il y a un gros problème logique (qui aurait dû vous sauter aux yeux ) : une colonne ne peut pas avoir deux noms différents.

    Faites quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT table_name
    FROM user_tab_columns u1
    WHERE column_name ='col1'
      AND EXISTS (
      SELECT NULL
      FROM user_tab_columns u2
      WHERE u1.table_name = u2.table_name
        AND u2.column_name = 'col2'
      )
    ;

  3. #3
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 386
    Points
    18 386
    Par défaut
    Comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      SELECT table_name
        FROM user_tab_columns 
       WHERE column_name IN ('COL1', 'COL2')
    GROUP BY table_name
      HAVING count(distinct column_name) = 2;
    Pour le having, dans ce cas de figure count(*) suffirait mais autant prendre les bonnes habitudes lorsqu'on parle de division relationnelle.

  4. #4
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Citation Envoyé par Waldar Voir le message
    ...lorsqu'on parle de division relationnelle.
    Ça me rappelle quelque chose
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Select table_name
      From user_tab_columns 
     Group By table_name
    Having varchar2_tt('EMPNO', 'ENAME') Submultiset Of Cast(Collect(column_name) As varchar2_tt)

  5. #5
    Membre expert

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2012
    Messages
    612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Juin 2012
    Messages : 612
    Points : 3 066
    Points
    3 066
    Par défaut
    J'aime bien l'approche Waldar, je n'y avais pas pensé, merci

    mnitu, une petite explication ?

  6. #6
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Avec les patates ça marche aussi (intersect)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT table_name
    FROM user_tab_columns 
    WHERE column_name = 'COL1'
    INTERSECT
    SELECT table_name
    FROM user_tab_columns 
    WHERE column_name = 'COL2'
    Attention aussi, les noms d'objets sont stockés en Majuscules dans la base (sauf si on précise la sensibilité à la casse à la création de l'objet)

  7. #7
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252

  8. #8
    Membre régulier
    Avatar de unix27
    Inscrit en
    Septembre 2003
    Messages
    338
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2003
    Messages : 338
    Points : 106
    Points
    106
    Par défaut
    Merci la compagnie c'est résolu

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 09/08/2010, 14h38
  2. [MySQL] Vérifier l'existence d'un nom dans une table
    Par joselito dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 12/01/2007, 22h49
  3. Tester l'existence d'une colonne dans une table
    Par caps_corp dans le forum Access
    Réponses: 4
    Dernier message: 05/06/2006, 17h31
  4. Vérifier l'existance d'une colonne dans une table MySQL
    Par )3lade dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 18/04/2006, 11h46
  5. Afficher deux colonnes dans une ListBox
    Par deubal dans le forum Composants VCL
    Réponses: 4
    Dernier message: 25/10/2005, 19h53

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