Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1216 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [RESOLU] [MySQL] Gérer une exception dans le tri d'une requête

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[RESOLU] [MySQL] Gérer une exception dans le tri d'une requête

n°1665762
Arnaud1106
Posté le 04-01-2008 à 12:48:51  profilanswer
 

Bonjour à tous,
 
Je cherche sans succès à faire une exception sur le tri d'une requête sur une base MySQL... Je m'explique :
 
J'ai écrit cette requête qui fonctionne très bien :
SELECT id_p_article,date,titre,image,image_position FROM p_article WHERE online = 1 ORDER BY date DESC, id_p_article DESC
 
Mais j'aimerai compléter mon ORDER BY pour que l'article dont le id_p_article = 1 soit toujours affiché en premier. Et ensuite, les résultats doivent être classés comme je l'ai indiqué.
 
Comment modifier ma requête pour gérer l'exception du premier article ?
 
Merci d'avance  ;)  
 
Arnaud.


Message édité par Arnaud1106 le 07-01-2008 à 12:14:06
mood
Publicité
Posté le 04-01-2008 à 12:48:51  profilanswer
 

n°1666103
moi23372
Posté le 04-01-2008 à 20:33:01  profilanswer
 

SELECT ... FROM ... WHERE ... ORDER BY .... (spécifique au premier article)
UNION
SELECT ... FROM ... WHERE ... ORDER BY .... (général)

n°1666244
TotalRecal​l
Posté le 05-01-2008 à 00:11:36  profilanswer
 

Y a de l'idée. Encore que apparemment vu le nom de ton champ il s'agit de ta primary key, donc tu le filtres directement dans le where du premier select et tu n'as plus de ORDER puisque c'est le seul enregistrement qui remonte pour cette requête.


---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
n°1666830
Arnaud1106
Posté le 06-01-2008 à 18:16:33  profilanswer
 

Merci à vous deux. A priori c'est effectivement ce que je cherche... j'ignorais l'existence de UNION !  :sarcastic:  
 
Il me reste un petit souci au niveau de l'ordre des résultats retournés. Sur vos conseils j'ai donc écrit la requête suivante :
 
(SELECT id_p_article,date,titre,image,image_position FROM p_article WHERE id_p_article = 1)
UNION
(SELECT id_p_article,date,titre,image,image_position FROM p_article WHERE online = 1 AND id_p_article != 1 ORDER BY date DESC, id_p_article DESC)
 
... et le ORDER BY présent dans le deuxième SELECT semble être ignoré.
 
Je ne m'y prend pas comme il faut ?
 
Merci encore,
 
Arnaud.

n°1666970
anapajari
s/travail/glanding on hfr/gs;
Posté le 07-01-2008 à 09:25:43  profilanswer
 

le union c'était pas une bonne idée (et en plus ça doit pourrir les perfs ):o

Code :
  1. SELECT
  2. id_p_article,date,titre,image,image_position
  3. FROM
  4. p_article
  5. WHERE online = 1
  6. ORDER BY case ip_p_article when 1 then 1 else 0 end ASC, date DESC, id_p_article DESC
 

Par contre, je comprends pas une chose, quelles sont les valeurs possibles de id_p_article?


Message édité par anapajari le 07-01-2008 à 09:26:06
n°1666974
Arnaud1106
Posté le 07-01-2008 à 09:39:57  profilanswer
 

Je vais essayer ça en début d'après-midi... merci !
 
Pour répondre à ta question, id_p_article est la clé primaire de ma table.

n°1666990
anapajari
s/travail/glanding on hfr/gs;
Posté le 07-01-2008 à 10:12:17  profilanswer
 

oui mais alors je comprends pas du tout ce que tu cherches à faire...
 
Pourquoi est-ce que le premier élément de ta table (id_p_article=1) doit apparaître avant les autres ( qui sont eux triés par ordre décroissant)?
La logique m'échappe complètement!

n°1667019
Arnaud1106
Posté le 07-01-2008 à 11:34:03  profilanswer
 

Et bien en fait je dois modifier une page qui affiche des articles. A la base, tous les articles, par ordre décroissant de date, puis d'id (au cas où il y aurait plusieurs articles pour une même date).
 
Ce fonctionnement doit rester intact SAUF QUE... on me demande de mettre un certains article (celui dont l'id est 1 en l'occurence) toujours en premier.
 
Voilà voilà.

n°1667021
anapajari
s/travail/glanding on hfr/gs;
Posté le 07-01-2008 à 11:46:52  profilanswer
 

oui bin tu fais deux requêtes dans ce cas là:

  • une pour gérer l'exception ( ou les si un jour ça arrive)
  • une pour gérer les cas normaux

n°1667044
Arnaud1106
Posté le 07-01-2008 à 12:13:35  profilanswer
 

Deux requêtes, effectivement c'est ce que je voulais faire depuis le début, mais je pensais trouver plus simple.
 
J'ai donc mis ce système en place et tout fonctionne nickel.
 
Merci à ceux qui m'ont répondu !  :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [RESOLU] [MySQL] Gérer une exception dans le tri d'une requête

 

Sujets relatifs
[RESOLU] Conversion au format Coplat: "à plat"[Resolu] .NET : Equivalent de ensureVisible sur un webcontrol?
Symbole "&" de batch --> vbs [ résolu ][RESOLU] Ne compter dans classement seulement WHERE count > 5
[EXCEL/VBA] Intersection avec une courbe lissée [RESOLU][CSS] [resolu] menu vertical déroulant en CSS sous FF et IE7
Help ! Requete MysQl avec php et html ![Resolu] Transformation d'un fichier en liste doublement chainée
PHP: lit le dernier enregistrement de la reqûete 
Plus de sujets relatifs à : [RESOLU] [MySQL] Gérer une exception dans le tri d'une requête


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR