pat84000 Posté 28 Mai 2010 Partager Posté 28 Mai 2010 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 daujourdhui comme critère exemple de tri que je voudrais obtenir en considérant que la date daujourdhui est le 10/05/29 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 dexemple: (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 seffectue pas dans chaque SELECT Merci pour votre aide Lien vers le commentaire Partager sur d’autres sites More sharing options...
jcaron Posté 28 Mai 2010 Partager Posté 28 Mai 2010 (SELECT 1 as tri,titre_event, date_event from tab_event WHERE date_event >= '10/05/29')UNION(SELECT -1,titre_event, date_event from tab_event WHERE date_event < '10/05/29')ORDER BY tri DESC,tri * date_eventLIMIT 0, 100 Jacques. Lien vers le commentaire Partager sur d’autres sites More sharing options...
pat84000 Posté 1 Juin 2010 Auteur Partager Posté 1 Juin 2010 (modifié) (SELECT 1 as tri,titre_event, date_event from tab_event WHERE date_event >= '10/05/29')UNION(SELECT -1,titre_event, date_event from tab_event WHERE date_event < '10/05/29')ORDER BY tri DESC,tri * date_eventLIMIT 0, 100 Jacques. Salut Jacques merci pour ta solution elle fonctionne a merveille Modifié 1 Juin 2010 par pat84000 Lien vers le commentaire Partager sur d’autres sites More sharing options...
pat84000 Posté 1 Juin 2010 Auteur Partager Posté 1 Juin 2010 (modifié) (SELECT 1 as tri,titre_event, date_event from tab_event WHERE date_event >= '10/05/29')UNION(SELECT -1,titre_event, date_event from tab_event WHERE date_event < '10/05/29')ORDER BY tri DESC,tri * date_eventLIMIT 0, 100 Jacques. Ok j'ai compris le critere "tri * date_event," mets la date en valeur negative ce qui nous fait un tri DESC pour le 2eme SELECT Modifié 1 Juin 2010 par pat84000 Lien vers le commentaire Partager sur d’autres sites More sharing options...
jcaron Posté 1 Juin 2010 Partager Posté 1 Juin 2010 Ben un tri sur X desc c'est la même chose qui tri sur -X asc. Donc si tu veux changer d'ordre de tri, dans un cas tu multiplies par 1 et dans l'autre cas par -1... Jacques. Lien vers le commentaire Partager sur d’autres sites More sharing options...
pat84000 Posté 1 Juin 2010 Auteur Partager Posté 1 Juin 2010 ok exact, j'avais l'affichage de la colonne pour mieux comprendre (SELECT 1 as tri, 1 * date_evenement AS tri2, tid, date_evenement from ipboard_topicsWHERE date_evenement >= '2010/05/29' AND forum_id =409)UNION(SELECT -1, -1 * date_evenement AS tri2,tid, date_evenement from ipboard_topicsWHERE date_evenement < '2010/05/29' AND forum_id =409)ORDER BY tri DESC,tri * date_evenement LIMIT 0, 100 pendant que tu me repondais j'avias un edit sur le post precedent en tout cas merci j'avais poster ce problème sur d'autres forum et il a eu de réponse aussi performante que la tienne Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant