[mysql][order by] une erreur?

Résolu/Fermé
amidal_ Messages postés 6 Date d'inscription dimanche 2 octobre 2005 Statut Membre Dernière intervention 20 juin 2006 - 12 juin 2006 à 14:35
 neecolas - 11 avril 2008 à 12:06
Bonjour,

Mon but est de trier suivant l'attribut ordre tous les tuples de ma table à partir du moment ou ordre est différent de zéro. Puis de lui unir tous les tuples de cette même table qui sont égales à zéro mais trier par ordre décroissant de leur id.

Mon code:
$reponse=mysql_query("(select * from $table where ordre!=0 order by ordre) union (select * from $table where ordre=0 order by id desc)" );


Après je traite $reponse pour qu'il s 'affiche mais si les ordre different de zéro sont bien séparés de ceux qui sont égale à zéro rien d 'autre n'est ordonné.

Biensur si j'utilise les requetes independamment les unes des autres elles fonctionnent.

Quelqu'un peut m'aider? merci.
A voir également:

7 réponses

Est-ce que les champs de tes deux tables sont au même nombre et du même type ?

http://dev.mysql.com/doc/refman/5.0/fr/union.html
0
amidal_ Messages postés 6 Date d'inscription dimanche 2 octobre 2005 Statut Membre Dernière intervention 20 juin 2006
12 juin 2006 à 17:58
oui etant donné qu'il s'agit de la même table.
0
Je suis pas sûr car j'utilise jamais le UNION, mais je me demande si l'on peut faire un ORDER BY différent pour chaque SELECT.

C'est quoi le le message d'erreur de mysql ?
0
amidal_ Messages postés 6 Date d'inscription dimanche 2 octobre 2005 Statut Membre Dernière intervention 20 juin 2006
13 juin 2006 à 09:25
En faite je n'ai pas de message d'erreur . Tout simplement aucun des tris ne s 'effectue et j ai bien les resultat de ma premiere requete puis de la seconde . J ai essayer d'utiliser les requetes séparément et elles fonctionnent . j'ai essayer de ne mettre qu'un order by et le tri qui reste ne marche pas .
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
J'avoue que je sais pas.

Cela fonctionnerait peut-être mieux en faisant une sous-requête.
0
crabs Messages postés 908 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 3 août 2008 506
13 juin 2006 à 22:11
Salut,
Si tu fais :
SELECT * FROM $table ORDER BY ordre DESC, id DESC

Cela ne te-fournit-il pas les informations que tu recherches ?
A+, crabs
0
amidal_ Messages postés 6 Date d'inscription dimanche 2 octobre 2005 Statut Membre Dernière intervention 20 juin 2006
15 juin 2006 à 14:07
Aucunes solutions que vous me proposer me donne ce que je veux...
Néanmoins je vous remerci de m'avoir repondu.

Le probleme a ete resolu ...
Il faut ajouter des limit
$reponse=mysql_query("(select * from $table where ordre!=0 order by ordre limit 100) 
union (select * from $table where ordre=0 order by id desc limit 100)" );
0
Merci :)
0