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 :

Comment faire 2 tris differents ORDER BY dans chaque SELECT avec un UNION


Sujet :

Requêtes MySQL

  1. #1
    Candidat au Club
    Inscrit en
    Mai 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Comment faire 2 tris differents ORDER BY dans chaque SELECT avec un UNION sur des DATES
    Salut a tous j'aurais besoin d'une aide

    Comment faire 2 tris différents ORDER BY dans chaque SELECT avec un UNION

    je m'explique
    j'ai une table (MYSQL 5.0.44) qui contient des annonces d'évènement classes par date
    je voudrais les afficher cette liste d’évènements par
    - 1er tri : Les évènements a venir du plus récent au plus futur
    - 2eme tri : Les évènements qui ont eu lieu du plus récent au plus vieux
    avec la date d’aujourd’hui comme critère

    exemple de tri que je voudrais obtenir en considérant que la date d’aujourd’hui est le 10/05/29
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    titre_event | date_event
    événement 4 | 10/05/29
    événement 5 | 10/05/30
    événement 3 | 10/05/31
    événement 2 | 10/05/28
    événement 1 | 10/05/27
    ma requete d’exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    (SELECT titre_event, date_event 
    from tab_event 
      WHERE date_event >= '10/05/29'
      ORDER BY date_event ASC)
    UNION
    (SELECT titre_event, date_event 
    from tab_event 
      WHERE date_event < '10/05/29'
      ORDER BY date_event DESC)
    LIMIT 0, 100
    Actuellement le résultat est que le tri ne s’effectue pas dans chaque SELECT

    Merci pour votre aide

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    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 799
    Points : 34 048
    Points
    34 048
    Billets dans le blog
    14
    Par défaut
    Essaie ceci, en changeant éventuellement le sens de tri :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT titre_event, date_event 
    FROM tab_event 
    ORDER BY DATEDIFF(date_event, CURRENT_DATE) DESC
    À noter que dans ton exemple de données et dans la valeur du WHERE de ta requête, la date n'est pas au format DATE standard. Il te faudra peut-être convertir la colonne avec STR_TO_DATE si la colonne n'est pas de type DATE.

  3. #3
    Candidat au Club
    Inscrit en
    Mai 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    j'ai trouvé ma solution.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 29/08/2011, 15h45
  2. [MySQL] Comment faire le tri des membres actifs dans un SELECT
    Par pasc06 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 27/11/2008, 14h00
  3. Comment faire le tri d'un array of array ?
    Par Tchouffy dans le forum Langage
    Réponses: 1
    Dernier message: 16/06/2005, 20h55
  4. Comment faire un retour a la ligne dans un tableaux Word
    Par alexmorel dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 17/06/2004, 09h31

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