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 :

Utiliser le résultat d'une requête dans le select


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2018
    Messages : 13
    Par défaut Utiliser le résultat d'une requête dans le select
    Bonjour,

    Est ce qu'il est possible de rendre cette requête générique:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Select Colonne|| ',' || Colonne|| ',' || Colonne|| ',' || Colonne|| ',' || Colonne|| ',' ||  Colonne|| ',' 
    || Colonne || ',' || Colonne    AS QuelqueChose
    FROM Table1 Inner join Table 2 on jointure ;
    J'ai essayé de réaliser une concaténation des colonnes puis l'utiliser comme sous-requête de cette manière:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Select (select LISTAGG(column_name, ('||'',''||')) WITHIN GROUP (ORDER BY 1)   from all_tab_columns Where table_name='Table2')                                             
    FROM Table1 a INNER JOIN Table2 b ON a.Jointure=b.Jointure ;
    Mais ça ne marche pas, je n'ai plus trop d'idées sur comment faire et surtout je me demande si c'est possible.

    Si vous avez des idées je suis preneur !

  2. #2
    Membre Expert
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 2 005
    Par défaut
    J'avoue n'avoir absolument pas compris la question

    Que veux-tu rendre générique?

    Quand tu lances cette requête dans tes tests, tu as quoi comme message d'erreur?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Select (select LISTAGG(column_name, ('||'',''||')) WITHIN GROUP (ORDER BY 1) from all_tab_columns Where table_name='Table2')
    FROM Table1 a INNER JOIN Table2 b ON a.Jointure=b.Jointure ;
    Quel est le but de ta requête?

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2018
    Messages : 13
    Par défaut
    Le code que tu as cité marche et renvoie toutes les noms de colonnes que je souhaites cibler en une seule colonne ( elles sont concaténées ), et avec ce résultat je souhaiterai faire comme avec la requête au début de mon post, c'est à dire sélectionner toutes les valeurs d'une ligne en particulier et les concatener pour qu'elles tiennent en une chaine de caractères.

    Le but final serait que peu importe le nombre de colonne dans la table ciblée ( car cette requete peut etre faite sur nimporte quelle table ), je puisse avoir toutes les lignes entières que je souhaite en une chaine de caractères d'où le listagg.

  4. #4
    Membre Expert
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 2 005
    Par défaut
    Est-ce que ce site t'aide?
    https://asktom.oracle.com/pls/apex/a...at-all-columns

    Merci aussi de poster un jeu d'essai avec les données de départ et le résultat attendu.

    Je repose ma question : "Quand tu lances cette requête dans tes tests, tu as quoi comme message d'erreur?"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Select (select LISTAGG(column_name, ('||'',''||')) WITHIN GROUP (ORDER BY 1) from all_tab_columns Where table_name='Table2')
    FROM Table1 a INNER JOIN Table2 b ON a.Jointure=b.Jointure ;

  5. #5
    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
    LISTAGG renvoie un VARCHAR2, donc en aucun cas, les données à l'intérieur peuvent être évaluées en tant que colonnes dans un SELECT

    Le seul moyen est d'utiliser EXECUTE IMMEDIATE.

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

Discussions similaires

  1. [AC-2010] Utiliser les résultats d'une requête dans VBA
    Par com689 dans le forum VBA Access
    Réponses: 15
    Dernier message: 26/04/2018, 23h16
  2. [9.5] Utiliser le résultat d'une requête dans cette même requête
    Par lofo7 dans le forum Requêtes
    Réponses: 2
    Dernier message: 25/04/2016, 23h39
  3. Utiliser le résultat d'une requête dans une autre requête
    Par ju1571 dans le forum Développement
    Réponses: 4
    Dernier message: 04/08/2015, 19h38
  4. Réponses: 17
    Dernier message: 10/05/2013, 11h14
  5. Réponses: 4
    Dernier message: 17/08/2011, 11h39

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