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

Requêtes MySQL Discussion :

union et order by


Sujet :

Requêtes MySQL

  1. #1
    Membre habitué
    Femme Profil pro
    Inscrit en
    Mai 2012
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 360
    Points : 139
    Points
    139
    Par défaut union et order by
    Bonjour,

    J'ai cette requête qui fonctionne


    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
    27
    28
    29
     
     SELECT jour.jour, personne.nom, jour.debutHoraire, jour.finHoraire, jour.typeHoraire,
     jour.dureeTravail, jour.dateJour, jour.idAbsence,  jour.dureeAfaire, 
     personne.horaireContrat, jour.indexJour, jour.dureeFormation, jour.dureeDelegation, 
    jour.dureeMedecineTravail, jour.dureeReunionSV 
    From Personne as personne, Semaine as semaine, Perssemainecompt as perssemainecompt, Jour as jour, Ecartannee as ecartannee 
     Where personne.idPersonne =  perssemainecompt.idPersonne
    and perssemainecompt.idJour = jour.idJour 		
     and semaine.idSemaine = jour.idSemaine 
    and semaine.type ='Réalisé' 
     and personne.idPersonne = 103 
    and jour.mois = 12 
    And jour.annee = 2016 
    group by perssemainecompt.idJour
     
    Union
     
     SELECT jour.jour, personne.nom, jour.debutHoraire, jour.finHoraire, jour.typeHoraire,
    jour.dureeTravail, jour.dateJour, jour.idAbsence,  jour.dureeAfaire, 
    personne.horaireContrat, jour.indexJour, jour.dureeFormation, jour.dureeDelegation, 
    jour.dureeMedecineTravail, jour.dureeReunionSV 
    From Personne as personne, Semaine as semaine, Perssemainecompt as perssemainecompt, Jour as jour, Ecartannee as ecartannee 
     Where personne.idPersonne =  perssemainecompt.idPersonne
     and perssemainecompt.idJour = jour.idJour 		
     and semaine.idSemaine = jour.idSemaine 
     and semaine.type ='Réalisé' 
    and personne.idPersonne = 103 
    and jour.dateJour = '30-11-2016'
    group by perssemainecompt.idJour
    Le soucis, c'est que je voudrais que les réponses soient ordonnées par jour.dateJour et que lorsque je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ORDER BY jour.dateJour
    cela ne fonctionne absolument pas.

    Auriez vous des pistes, s'il vous plait ?

  2. #2
    Membre habitué
    Femme Profil pro
    Inscrit en
    Mai 2012
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 360
    Points : 139
    Points
    139
    Par défaut
    Finalement, j'ai trouvé la solution toute seule. Il ne fallait pas mettre que le nom de l'attribut, sans rajouter l'intitulé de la table


    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
    27
    28
    29
    30
    31
    32
     
     
    SELECT jour.jour, personne.nom, jour.debutHoraire, jour.finHoraire, jour.typeHoraire,
     jour.dureeTravail, jour.dateJour, jour.idAbsence,  jour.dureeAfaire, 
     personne.horaireContrat, jour.indexJour, jour.dureeFormation, jour.dureeDelegation, 
    jour.dureeMedecineTravail, jour.dureeReunionSV ,jour.dateJourDate
    From Personne as personne, Semaine as semaine, Perssemainecompt as perssemainecompt, Jour as jour, Ecartannee as ecartannee 
     Where personne.idPersonne =  perssemainecompt.idPersonne
    and perssemainecompt.idJour = jour.idJour 		
     and semaine.idSemaine = jour.idSemaine 
    and semaine.type ='Réalisé' 
     and personne.idPersonne = 103 
    and jour.mois = 12 
    And jour.annee = 2016 
    group by perssemainecompt.idJour
     
    Union
     
    SELECT jour.jour, personne.nom, jour.debutHoraire, jour.finHoraire, jour.typeHoraire,
    jour.dureeTravail, jour.dateJour, jour.idAbsence,  jour.dureeAfaire, 
    personne.horaireContrat, jour.indexJour, jour.dureeFormation, jour.dureeDelegation, 
    jour.dureeMedecineTravail, jour.dureeReunionSV, jour.dateJourDate
    From Personne as personne, Semaine as semaine, Perssemainecompt as perssemainecompt, Jour as jour, Ecartannee as ecartannee 
     Where personne.idPersonne =  perssemainecompt.idPersonne
     and perssemainecompt.idJour = jour.idJour 		
     and semaine.idSemaine = jour.idSemaine 
     and semaine.type ='Réalisé' 
    and personne.idPersonne = 103 
    and jour.dateJour = '30-11-2016'
    group by perssemainecompt.idJour
     
    ORDER BY dateJour

  3. #3
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 910
    Points
    38 910
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    Pourquoi mettez vous une clause "GROUP BY" alors que vous n'effectuez aucune agrégation ?
    Cette syntaxe est invalide avec tout autre SGBD que MySQL, fonctionnellement c'est un non sens, et cela pénalise les perfs

    Pourquoi n'utilisez vous pas les jointures normalisées JOIN, c'est quand même plus lisible de séparer ce qui est filtrage de ce qui est jointure.

    De plus, il semble que les 2 requetes n'aient pas d'intersection puisque les critères date sont d'un coté décembre 2016 et de l'autre 30-11-2016
    Du coup un UNION ALL est préférable car plus performant (pas de dédoublonnage)

Discussions similaires

  1. "not null" avec union et order by
    Par cauriera dans le forum Langage SQL
    Réponses: 2
    Dernier message: 10/01/2007, 16h14
  2. [SQL] union et order by
    Par lazzeroni dans le forum Oracle
    Réponses: 2
    Dernier message: 11/07/2006, 16h08
  3. union et order by
    Par karimspace dans le forum Access
    Réponses: 2
    Dernier message: 05/01/2006, 14h32
  4. [MySQL] Union et order by
    Par Klaim dans le forum Langage SQL
    Réponses: 3
    Dernier message: 16/11/2004, 16h29
  5. Problème requête avec UNION et ORDER BY
    Par Yann21 dans le forum Langage SQL
    Réponses: 12
    Dernier message: 12/12/2003, 11h02

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