Changer ordre requête MySQL

Résolu/Fermé
jejew - 8 nov. 2011 à 01:14
Mihawk Messages postés 4315 Date d'inscription mercredi 29 mars 2006 Statut Contributeur Dernière intervention 6 janvier 2015 - 8 nov. 2011 à 15:03
Bonjour,

Pour une application dans mon site, je dois prendre les 30 articles récents qui suivent une date. J'ai un article du 1er septembre et imaginons qu'après cette date j'ai posté 30 articles. J'aimerais prendre les 10 articles qui suivent directement celui de 1er septembre.

Ma requête SQL est donc la suivante :

SELECT * FROM articles WHERE pub_date > '2011-09-01 19:00:00' ORDER BY songs.pub_date LIMIT 10


Ca m'affichera donc :

Article 1 - 2011-09-02 19:00:00
Article 2 - 2011-09-03 19:00:00
Article 3 - 2011-09-04 19:00:00
.......

Or j'aimerais afficher sur mon site :

..........
Article 3 - 2011-09-04 19:00:00
Article 2 - 2011-09-03 19:00:00
Article 1 - 2011-09-02 19:00:00

Je ne peux pas mettre un ordre DESC dans MySQL sinon il va prendre les 10 derniers article depuis maintenant.
J'aimerais donc pouvoir switcher l'ordre dans ma boucle php while.
Avez-vous une idée ?

Merci d'avance !

Jeremy

A voir également:

2 réponses

Zhp Messages postés 198 Date d'inscription mercredi 27 avril 2011 Statut Membre Dernière intervention 5 mars 2013 37
8 nov. 2011 à 04:58
Bonjour,

Quand on cherche une solution en php le mieux est de commencer pas php.net :D

http://php.net/manual/fr/function.array-reverse.php
0
Ca va bien pour une table array mais je ne vois pas comment je pourrais l'intégrer à la boucle :

		while ($data = mysql_fetch_assoc($result))
			{
echo '<li><a href="index.php?posttitle='.$data['post_title'].'"><img src="campus/upload/cover_'.$data['post_title'].'.jpg"><span class="title"><strong>'.$category_name.'</strong><br>'.$data['title'].'</span></a></li>';
			}



Merci !
0
Mihawk Messages postés 4315 Date d'inscription mercredi 29 mars 2006 Statut Contributeur Dernière intervention 6 janvier 2015 846
8 nov. 2011 à 13:15
Essaye donc ceci :

SELECT * FROM (SELECT * FROM articles WHERE pub_date > '2011-09-01 19:00:00' ORDER BY songs.pub_date LIMIT 10) ORDER BY songs.pub_date DESC

0
Merci pour ta réponse.

Malheureusement, comme je l'ai dit plus haut je ne peux pas utiliser DESC de SQL.
Exemple :
J'ai un article du 1er septembre et imaginons qu'après cette date j'ai posté 30 articles. J'aimerais prendre les 10 articles qui suivent directement celui de 1er septembre. Si j'utilise DESC il me prendra les 10 les plus récents à ce jour et pas les 10 tout juste après le 1er septembre.
0
Mihawk Messages postés 4315 Date d'inscription mercredi 29 mars 2006 Statut Contributeur Dernière intervention 6 janvier 2015 846
Modifié par Mihawk le 8/11/2011 à 14:04
Si tu avais bien lu ma réponse tu verrai que je n'applique le DESC qu'aux résultats d'une première sous-requête.
Cela te récupère les bons résultats puis te les ordonne.
Essaye donc !
0
Mes excuses ! J'avais vu DESC et j'ai foncé ! :/
J'ai essayé malheureusement mysql me répond :

'MySQL a répondu:Documentation
#1248 - Every derived table must have its own alias'

Mais je pense qu'on est prêt du but :)
0
Mihawk Messages postés 4315 Date d'inscription mercredi 29 mars 2006 Statut Contributeur Dernière intervention 6 janvier 2015 846
8 nov. 2011 à 14:17
Et ça ?

SELECT * FROM (SELECT * FROM articles a WHERE a.pub_date > '2011-09-01 19:00:00' ORDER BY a.songs.pub_date LIMIT 10) b ORDER BY b.songs.pub_date DESC
0
Toujours pas : #1054 - Unknown column 'a.songs.pub_date' in 'order clause' :S
0