[mysql][order by] une erreur?

Résolu
amidal_ Messages postés 6 Date d'inscription   Statut Membre Dernière intervention   -  
 neecolas -
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.

7 réponses

Yvan
 
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   Statut Membre Dernière intervention  
 
oui etant donné qu'il s'agit de la même table.
0
Yvan
 
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   Statut Membre Dernière intervention  
 
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
Yvan
 
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   Statut Membre Dernière intervention   507
 
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   Statut Membre Dernière intervention  
 
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
neecolas
 
Merci :)
0