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 :

Combiner deux résultats de requete


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 5
    Par défaut Combiner deux résultats de requete
    Bonjour,

    Je suis face à un petit problème de SQL que je n'arrive pas à résoudre.
    J'ai deux requêtes (elles s'effectuent sur la même table) qui renvoient certains résultats, et j'aimerais combiner les résultats des deux requêtes.

    Les deux premières requêtes renvoient les résultats suivants :

    Résultat Requête n°1 :

    1 01/05/2010 ---
    2 01/04/2010 01/01/2012
    7 01/01/2010 ---
    Résultat Requête n°2 :

    3 01/01/2005 31/10/2007
    5 01/01/1996 31/12/2006
    6 08/09/1999 31/12/2005
    4 01/01/2000 31/12/2004
    Concrètement, la première requête fait un tri DESC sur la première colonne, et la seconde fait un tri DESC sur la seconde colonne

    J'aimerais donc pouvoir combiner les résultats de la manière suivante :

    1 01/05/2010 ---
    2 01/04/2010 01/01/2012
    7 01/01/2010 ---
    3 01/01/2005 31/10/2007
    5 01/01/1996 31/12/2006
    6 08/09/1999 31/12/2005
    4 01/01/2000 31/12/2004
    C'est-à-dire, en mettant très simplement les résultats de la seconde requête directement derrière ceux de la première.

    Quelqu'un aurait une idée, par hasard ?
    Merci d'avance

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Ce serait mieux de nous donner ta requête !

    Avec les données que tu proposes, il devrait être suffisant de faire la clause ORDER BY sur les deux colonnes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ORDER BY date1 DESC, date2 DESC
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre à l'essai
    Inscrit en
    Juin 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 5
    Par défaut
    Voici les deux requêtes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    select * from table1
    where (table1_datefin > sysdate or table1_datefin is null)
    order by table1_datedebut desc
     
    select * from table1
    where table1_datefin < sysdate
    order by table1_datefin desc
    Juste pour info : j'ai essayé de faire le rassemblement avec un UNION ALL, mais visiblement, cela ne fonctionne pas

  4. #4
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Tes deux requêtes excluent le cas où datefin = sysdate. Normal ?

    Essaie comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SELECT * 
    FROM ( 
      SELECT * 
      FROM table1
      WHERE table1_datefin > sysdate 
        OR table1_datefin IS NULL
     
      UNION
     
      SELECT * 
      FROM table1
      WHERE table1_datefin < sysdate
    ) AS Tmp
    ORDER BY table1_datedebut DESC, table1_datefin DESC
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Membre à l'essai
    Inscrit en
    Juin 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 5
    Par défaut
    Pour ce qui est du cas où datefin = sysdate, oui, en effet, le cas n'était pas géré, il faudra que je le rajoute.

    Après, j'ai testé ta requête, mais il me renvoie l'erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ORA-00933 : la commande SQL ne se termine pas correctement
    (il me met en surbrillance le "AS")

    (j'avais oublié de préciser que j'étais en contexte Oracle, mais je ne sais pas si cela change grand-chose)

  6. #6
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Je ne maîtrise pas Oracle mais je crois savoir que les alias de tables se donnent sans le mot clé AS chez ce SGBD parfois bizarre !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SELECT * 
    FROM ( 
      SELECT * 
      FROM table1
      WHERE table1_datefin > sysdate 
        OR table1_datefin IS NULL
     
      UNION
     
      SELECT * 
      FROM table1
      WHERE table1_datefin < sysdate
    ) Tmp
    ORDER BY table1_datedebut DESC, table1_datefin DESC
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

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

Discussions similaires

  1. [MySQL] combiner deux requetes pour affichage d'un menu automatique
    Par ledisciple dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 25/07/2012, 17h14
  2. Jointure entre deux résultats de 2 requetes
    Par fullmetalalchemiste dans le forum Requêtes
    Réponses: 11
    Dernier message: 20/05/2012, 19h08
  3. Réponses: 3
    Dernier message: 20/01/2009, 11h34
  4. 2 requetes pour combiner les résultats
    Par creale10 dans le forum Requêtes
    Réponses: 9
    Dernier message: 12/12/2006, 00h10
  5. résultat de requete dans un formulaire
    Par tomo0013 dans le forum Access
    Réponses: 3
    Dernier message: 17/09/2005, 14h53

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