2010-04-12 3 views
0

Je voudrais commander par date, puis équipe dans une requête MySQL. Il devrait être quelque chose de similaire à ceci:MySQL ORDER BY date et l'équipe

SELECT * FROM games ORDER BY gamedate ASC, team_id 

et il devrait quelque chose comme de sortie ceci:

2010-04-12 10:20 Game 1 Team 1 
2010-04-12 11:00 Game 3 Team 1 
2010-04-12 10:30 Game 2 Team 2 
2010-04-14 10:00 Game 4 Team 1 

Alors que l'équipe 1 est sous l'autre à la même date, mais distincte sur une nouvelle date

Répondre

5

En supposant que gamedate est un champ de date plutôt qu'un champ datetime, cela devrait fonctionner. Si c'est un champ datetime, vous devez utiliser quelque chose comme date(gamedate) comme le premier prédicat de commande:

SELECT * FROM games ORDER BY date(gamedate) ASC, team_id ASC 
+0

Merci! cela a fonctionné, maintenant je veux qu'il soit un peu plus précis, il devrait commander par date d'abord, que le plus tôt, tout en tenant compte du fait que les équipes devraient être ensemble: maintenant il est: 2010-04-12 10 : 30 Partie 2 Équipe 1 2010-04-12 10:20 Jeu 1 Équipe 2 2010-04-12 11:00 Jeu 3 Équipe 2 2010-04-14 10:00 Jeu 4 Équipe 1 ainsi le premier Le temps de cette date donnée devrait être au dessus de – Michael

+0

Ce serait un morceau assez odieux de SQL :-) Je suggérerais de le faire au niveau de l'application plutôt qu'au niveau de la base de données. En d'autres termes, rassemblez les données par date et par équipe, puis réorganisez les ensembles d'équipes (plusieurs enregistrements partageant la même date et la même équipe) dans la date afin que les équipes avec les premiers temps de départ dans leurs premiers enregistrements flottent au premier plan. – paxdiablo

+0

Impossible de faire cela en utilisant 'ORDER BY DATE (gamedate) ASC, team_id ASC, gamedate ASC'? Bien sûr, je pourrais mal comprendre la question, mais cela devrait ordonner l'ensemble des jeux d'un 'team_id' selon l'heure, mais pas globalement. –