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 éclairé
    Avatar de unix27
    Inscrit en
    Septembre 2003
    Messages
    338
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Septembre 2003
    Messages : 338
    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
    à consulter avant de poster ... la FAQ de C#

  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 : 36
    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
    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 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    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 454
    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 confirmé 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
    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 : 36
    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
    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 confirmé

    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
    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 confirmé 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

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

    Informations forums :
    Inscription : Septembre 2003
    Messages : 338
    Par défaut
    Merci la compagnie c'est résolu
    à consulter avant de poster ... la FAQ de C#

+ 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