[MySQL] Tri sur la premiere requete avec union

Tri sur la premiere requete avec union [MySQL] - SQL/NoSQL - Programmation

Marsh Posté le 24-05-2006 à 10:55:34    

Bonjour,
 
Je dois dans ma requete afficher un élément en premier,  et les ordres résultats par ordre défini dans un champ.
 
Voici ma requete :  
 
select * from article as tab1 where id= '126'  
union  
select * from article as tab2 where id != '126'  
order by position asc  
 
Sauf qu'il me retourne tout le résultat dans l'ordre "position" et non pas la premiere requete en 1er.  
(j'aimerai au possible ne pas faire un système de deux requetes séparées)
 
Deuxieme probleme : mon id est en fait sur 2 champs : code1, code2.
Dans ma 2e requete, j'aimerai donc pouvoir mettre :  
select * from article as tab2 where code1 != '126'  and code2 != '4' .  
Sauf que dans ce cas la, aucun résultat n'est affiché ...  
 
Merci par avance.

Reply

Marsh Posté le 24-05-2006 à 10:55:34   

Reply

Marsh Posté le 24-05-2006 à 10:58:25    

Code :
  1. select 1 as truc, * from article as tab1 where id= '126' 
  2. union 
  3. select 2 as truc, * from article as tab2 where id != '126' 
  4. order by truc, position asc

Reply

Marsh Posté le 24-05-2006 à 11:25:55    

Sinon, on peut faire :
SELECT *
FROM article
ORDER BY (id = 126) DESC, position ASC
 
(pas sur de l'élégance de la chose :D )

Reply

Marsh Posté le 24-05-2006 à 11:26:57    

Niquel, ca marche !
Juste une petite modif, mettre article.* et non pas * directement, sinon il fait une erreur.
 
Tu me "sauves" la vie ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed