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 :

Mettre 5 requêtes distinctes dans une seul résultat (juxtaposé)


Sujet :

PL/SQL Oracle

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    344
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 344
    Points : 104
    Points
    104
    Par défaut Mettre 5 requêtes distinctes dans une seul résultat (juxtaposé)
    Bonjour,
    Ce n'est pas simple à expliquer...

    j'ai 5 petites requêtes PLSQL que j'exécute chaque matin (toutes en même temps) et dont je colle le résultat dans une feuille XLS une fois exécutées.
    J'ai donc 5 résultats des requêtes à copier à 5 endroits différents (sur Excel)
    Je souhaiterais n'avoir qu'un résultat et qu'une copie mais les requêtes sont totalement différentes les unes des autres donc je coince sinon je ferais une UNION.

    Afin de simplifier les choses, serait-il possible que ces 5 requêtes soint exécutées comme dans une seule (bien quelles aients des structures totalement différentes) et que le résultat de la requêtes 2 soit mis dans les colonnes à droite du résultat de la requête 1, les données de la 3 à la droite de celles de la 2 etc etc
    Au final je n'aurais qu'un résultat unique (constitués des 5 résultats juxtaposés horizontalement) que je collerais dans Excel et je m'en débrouille ensuite.

    Merci si vous avez une idée

    Cdlt
    Laurent

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 778
    Points
    30 778
    Par défaut
    Ton besoin serait certainement plus à traiter au niveau de ton interface client qu'au niveau du SQL.
    Toutefois, tu as une solution possible :
    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
    select  rq1.col1
        ,   rq2.col2
        ,   ...
        ,   rqn.coln
    from    entiers ent
        left join
            (   select  row_number() over (order by critere_1)  lg_1
                    ,   colonne_1
                from    requete1
            )   rq1
            on  ent.num = rq1.lg_1
        left join
            (   select  row_number() over (order by critere_2)  lg_2
                    ,   colonne_2
                from    requete2
            )   rq2
            on  ent.num = rq2.lg_2
    ...
        left join
            (   select  row_number() over (order by critere_3)  lg_n
                    ,   colonne_3
                from    requete3
            )   rq2
            on  ent.num = rqn.lg_n
    where   coalesce(rq1.lg_1, rq2.lg_2, ..., rqn.lg_n, 0) > 0
    ;
    Si tu ne connais pas la requête qui retournera toujours le plus grand nombre de lignes, tu as besoin d'une table d'entiers (qui contient suffisamment de valeurs) pour piloter la requête, ce que j'ai fait ici. Sinon, tu bases tes jointures sur la requête qui retourne le plus grand nombre de lignes.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    344
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 344
    Points : 104
    Points
    104
    Par défaut
    merci bien, je vais essayer d'exploiter cette piste
    Laurent

  4. #4
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    Citation Envoyé par al1_24 Voir le message
    Si tu ne connais pas la requête qui retournera toujours le plus grand nombre de lignes, tu as besoin d'une table d'entiers (qui contient suffisamment de valeurs) pour piloter la requête, ce que j'ai fait ici. Sinon, tu bases tes jointures sur la requête qui retourne le plus grand nombre de lignes.
    Ou des jointures externes bilatérales ?


  5. #5
    Membre expert
    Avatar de alassanediakite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Mali

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 1 599
    Points : 3 590
    Points
    3 590
    Billets dans le blog
    8
    Par défaut une question...
    Salut
    Le LATERAL JOIN peut-il résoudre ce genre de problème.
    Merci d'avance.
    Le monde est trop bien programmé pour être l’œuvre du hasard…
    Mon produit pour la gestion d'école: www.logicoles.com

Discussions similaires

  1. Réponses: 7
    Dernier message: 17/10/2014, 18h43
  2. Réponses: 7
    Dernier message: 15/01/2014, 19h45
  3. Concaténer résultat requête dans une seule ligne
    Par ahmed99 dans le forum Débuter
    Réponses: 2
    Dernier message: 24/01/2013, 02h53
  4. Réponses: 7
    Dernier message: 18/03/2011, 16h09
  5. Réponses: 1
    Dernier message: 24/05/2006, 16h25

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