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

Oracle Discussion :

Sélection du contenu des indexs d'une table


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 23
    Par défaut Sélection du contenu des indexs d'une table
    Bonjour ,

    Je cherche à récupérer le contenu de tous les index d'une table sous oracle.

    Ce qui donne un peu près le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT *
    FROM MaTable
    WHERE COLUMN_NAME IN
           (SELECT * FROM DBA_INDEXES WHERE TABLENAME = 'MaTable')
    Sauf qu'évidemment, ça ne marche pas Pour cause : identificateur COLUMN_NAME invalide (ORA-00901)

    Quelqu'un aurait une idée de comment je pourrais faire ? Merci d'avance

  2. #2
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 461
    Par défaut
    Citation Envoyé par Skualys Voir le message
    Bonjour ,

    Je cherche à récupérer le contenu de tous les index d'une table sous oracle.
    ...
    Quelqu'un aurait une idée de comment je pourrais faire ? Merci d'avance
    Je ne comprends pas ce que vous cherchez à faire.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 23
    Par défaut
    En fait j'ai un certains nombre de colonnes indexées dans la table MaTable. Je cherche à en récupérer tous les enregistrements (uniquement ceux des colonnes indexées, donc.)

    Si vous préférez, on aurait quelque chose comme ça, qui est syntaxiquement incorrect (mais correspond peut être mieux à l'idée) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT
    (SELECT COLUMN_NAME FROM ALL_IND_COLUMNS WHERE TABLENAME = "MaTable") FROM MaTable

  4. #4
    Membre éprouvé
    Inscrit en
    Mai 2010
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 107
    Par défaut
    Hello,

    Je ne comprend pas bien la question.
    Si tu cherches à récupérer le noms des colonnes indéxées d'une table, tu peux utiliser la requête suivante (je n'ai pas d'Oracle sous la main):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select index_name, table_name, column_name, column_position
    from user_ind_columns
    where UPPER(table_name) = 'xxxxxMA_TABLExxxxx'
    order by 2;
    Ensuite, si tu veux plus de détails sur ton index, tu peux utiliser la requête suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select  index_name, table_name, index_type, uniqueness 
     from user_indexes
     where ...
    Tu peux également faire une jointure directement sur INDEX_NAME mais si tu pouvais un peu mieux expliquer le résultat souhaité, je suis sur qu'on pourrait facilement trouver la requête adéquate,

    Bien à toi,

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 23
    Par défaut
    Rien ne vaut un exemple : admettons que j'ai une table CLIENT avec pour colonnes indexées ID et NOM.

    J'aimerai produire quelque chose d'équivalent à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT ID, NOM FROM CLIENT
    , mais devoir utiliser le nom des colonnes dans la clause select. A la place, j'aimerai dynamiquement chercher tous les enregistrements des colonnes indexées, dont la liste m'est fournie par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (SELECT COLUMN_NAME FROM ALL_IND_COLUMNS WHERE TABLENAME = 'CLIENT')

  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
    Faut générer dynamiquement les noms de colonnes => EXECUTE IMMEDIATE

Discussions similaires

  1. Réponses: 0
    Dernier message: 08/02/2011, 18h42
  2. [WD15] Contenue des colonnes d'une table
    Par thierrybatlle dans le forum WinDev
    Réponses: 1
    Dernier message: 12/02/2010, 15h23
  3. Réponses: 1
    Dernier message: 04/05/2008, 23h26
  4. [OC]Aligner le contenu des colonnes d'une table à gauche
    Par Doctor Z dans le forum Adaptive Server Enterprise
    Réponses: 3
    Dernier message: 08/11/2007, 22h07
  5. Réponses: 14
    Dernier message: 19/10/2006, 14h23

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