Rechercher : dans
Par :

[mysql][order by] une erreur?

Dernière réponse le 11 avr 2008 à 12:06:23 amidal_, le 12 jun 2006 à 14:35:10 
 Signaler ce message aux modérateurs

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.

Meilleures réponses pour « [mysql][order by] une erreur? » dans :
SQL - Tri VoirTri des résultats Il est possible en SQL d'organiser les résultats grâce à la clause ORDER BY. La clause ORDER BY est suivie des mots clés ASC ou DESC, qui précisent respectivement si le tri se fait de manière croissante (par défaut) ou...

1

Yvan, le 12 jun 2006 à 17:02:24

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

Répondre à Yvan

2

amidal_, le 12 jun 2006 à 17:58:50

Oui etant donné qu'il s'agit de la même table.

Répondre à amidal_

3

Yvan, le 12 jun 2006 à 21:02:39

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 ?

Répondre à Yvan

4

amidal_, le 13 jun 2006 à 09:25:21

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 .

Répondre à amidal_

5

Yvan, le 13 jun 2006 à 14:17:40

J'avoue que je sais pas.

Cela fonctionnerait peut-être mieux en faisant une sous-requête.

Répondre à Yvan

6

crabs, le 13 jun 2006 à 22:11:02

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 ..., I think Slackware sounds better than 'Microsoft,'
-- Patrick Volkerding - founder and maintainer of Slackware

Répondre à crabs

7

amidal_, le 15 jun 2006 à 14:07:24

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)" );

Répondre à amidal_

8

 neecolas, le 11 avr 2008 à 12:06:23

Merci :)

Répondre à neecolas
Collection CommentÇaMarche.net