ordonner les resultats d'une requete SQL !

ordonner les resultats d'une requete SQL ! - SQL/NoSQL - Programmation

Marsh Posté le 15-12-2005 à 11:01:52    

Bonjour,
 
en fait j'ai un pb, voila je voudrais sortir les resultats dans l'ordre que je veux ( que je connais deja )
un example vaut mieux qu'un long discours !
 

Code :
  1. // ma requete
  2. $sql="SELECT id_n,n_titre,n_news1 FROM news WHERE id_n IN ('168','147','126','165','155','156','199','159','160','177','201','209','148')"
  3. // je voudrais qu'il me sorte les résultats dans l'ordre que j'ai mis : 168 en 1er 147 en 2eme etc...
  4. // or la il me les sort selon les id_n croissant !
  5. // je n'ai pas mis de order pourtant ! est ce que c'est possible ?


 
merci

Reply

Marsh Posté le 15-12-2005 à 11:01:52   

Reply

Marsh Posté le 15-12-2005 à 11:29:55    

c'est TRES simple, mais comme tu vas voir, tu va vite laisser tomber cette idée :D
 

select case id_n when 168 then 1 when 147 then 2 when 126 then 3 ... end dtc, id_n, titre, n_news1 from news where id_n in ('168','147','126','165','155','156','199','159','160','177','201','209','148') order by dtc

Reply

Marsh Posté le 15-12-2005 à 11:44:15    

Arjuna a écrit :

c'est TRES simple, mais comme tu vas voir, tu va vite laisser tomber cette idée :D
 

select case id_n when 168 then 1 when 147 then 2 when 126 then 3 ... end dtc, id_n, titre, n_news1 from news where id_n in ('168','147','126','165','155','156','199','159','160','177','201','209','148') order by dtc



 
 
heu  :??:  ca ne ralentit pas trop la requete de faire ca ?
parce que sinon je vais le faire  :pt1cable:

Reply

Marsh Posté le 15-12-2005 à 11:50:19    

ben ça dépends surtout du nombre de lignes...

Reply

Marsh Posté le 15-12-2005 à 12:08:35    

oui ou alors
select decode('168',1,'147',2,'126',3.......

Reply

Marsh Posté le 15-12-2005 à 12:11:14    

case étant supporté par plus de sgbd... ;)

Reply

Marsh Posté le 15-12-2005 à 12:12:16    

oui, j'y peux rien, je m'oraclise avec le temps :p

Reply

Marsh Posté le 15-12-2005 à 12:17:41    

j'avais pas remarqué avec tes connect à toutes les sauces ;)
 
c'est super puissant. mais étant à la base orienté web, et maintenant sur un outils multi-plateforme, je me suis tout de suite dit "nan, connect by", super, mais poubelle : vais avoir l'air malain quand on va vouloir porter le truc sur un autre sgbd et que je vais passer plus de temps à réécrire la chose qu'à l'écrire la première fois ;)

Reply

Marsh Posté le 15-12-2005 à 12:18:34    

Arjuna a écrit :

ben ça dépends surtout du nombre de lignes...


 
bon ben ca marche c parfait !!!
je te donne les petites lignes de codes si jamais tu voulais le faire :d  
 
 

Code :
  1. $new_array contient tous les id_n
  2. $cased="CASE id_n";
  3.   while (list($key, $val) = each($new_array)) {
  4.    $sql_suite[]="$key";
  5.    $cased.=" when $key then $l";
  6.    $l++;
  7.   }
  8.   $cased.=" END dtc";
  9. // et pour la requete :
  10. $sql_req="SELECT $cased,id_n,n_titre,n_news1 FROM $table_news WHERE id_n IN ('".join("','",$sql_suite)."') ORDER BY dtc";


 
si ca peut t'aider en retour !
bizou

Reply

Marsh Posté le 15-12-2005 à 12:20:53    

du php :o
 
vade retro :p

Reply

Marsh Posté le 15-12-2005 à 12:20:53   

Reply

Marsh Posté le 15-12-2005 à 12:22:25    

Arjuna a écrit :

du php :o
 
vade retro :p


 
Pardon desole faut le faire en quel langage

Reply

Marsh Posté le 15-12-2005 à 12:24:12    

n'importe, sauf php ;)
 
mais c'est bon, j'en ai pas besoin, et c'est l'algo qui compte

Reply

Marsh Posté le 15-12-2005 à 12:25:48    

Arjuna a écrit :

n'importe, sauf php ;)
 
mais c'est bon, j'en ai pas besoin, et c'est l'algo qui compte


 
 
ok !
bon ben jtb et je retourne sur le php :ouimaitre:

Reply

Marsh Posté le 15-12-2005 à 14:33:51    

Arjuna a écrit :

j'avais pas remarqué avec tes connect à toutes les sauces ;)
 
c'est super puissant. mais étant à la base orienté web, et maintenant sur un outils multi-plateforme, je me suis tout de suite dit "nan, connect by", super, mais poubelle : vais avoir l'air malain quand on va vouloir porter le truc sur un autre sgbd et que je vais passer plus de temps à réécrire la chose qu'à l'écrire la première fois ;)


 
Parole d'architecte -> Dans toutes structures n tiers, les requetes doivent etre SPECIFIQUES à la BDD, c'est la couche superieure qui doit la multi BDD....

Reply

Marsh Posté le 15-12-2005 à 14:43:47    

ça c'est une tructure n tiers.
 
moi je parle site web marchand "clé en main".
ma boîte bossait principalement avec la technologie Microsoft, donc SQL Server + ASP
Ensuite, un client s'est pointé, et nous a demandé de la gestion documentaire uniquement.
Vu que j'avais modélisé ça comme un dieu (faut bien se jeter des roses à soit-même de temps en temps, personne le fait pour vous), on a décidé de réutilisé la même base et les mêmes devs pour gérer ça. on a fait évoluer notre offre et tout était bien dans le meilleur des mondes possibles.
 
puis... un jour... un gars s'est pointé, et a demandé le même truc, mais avec MySQL à la place de SQL Server.
 
le commercial et le CP n'ont pas tilté et... on s'est retrouvé à devoir livrer la chose en 30 jours (temps vendu pour établir la charte graphique et intégrer le contenu, puisqu'il n'y avait aucun dev à faire)
 
Bah je peux te dire que ça a été bien l'alerte dans l'openspace quand on a découvert que "MySQL" s'était glissé un peu partout dans le cahier des charges ! pendant 15 jours, on a repris toutes les requêtes une à une afin de virer tout ce qui était spécifique, et finalement on a tout de même réussi à tenir les délais en doublant le nombre de personnes sur le projet. je peux dire qu'heureusement que depuis le départ j'avais mis en garde contre l'utilisation abusive de trucs proprios dans ce genre d'application. on n'a notamment pas eu de problème de PS ou Trigger. Sans ça, on était bout pour payer des pénalités pendant 6 mois !
 
Aujourd'hui, je travaille dans une société partenaire d'un éditeur d'ERP. Cet ERP tourne avec Oracle.
Ils sont en train d'étudier sa portabilité sur MSDE/SQL Server et PostGreSQL, afin de mieu s'intégrer dans des SI déjà existants, et baisser la facture. A partir de là, je ne fais plus le moindre bout de code qui nécessite réécriture pour passer d'un SGBD à l'autre, parceque sinon, on va passer notre temps à réinventer la roue... :spamafote:

Reply

Marsh Posté le 15-12-2005 à 14:44:43    

pis d'abors, moi aussi je suisarchitecte d'applications :o enfin... maintenant je suis chef projet, mais je trouve ça fait naze comme titre, alors je garde l'ancien, ça en jette plus :D

Reply

Marsh Posté le 15-12-2005 à 15:31:51    

Bon j'avais fait une long mail, mais j'ai finalement décidé de l'effacer, il faisait trop polémique ....
 
Je garderai juste un petit mot: Soit ton CP etait un crétin, soit ton commercial un pourri (ou mieux encore, les deux ....).
 
 
 

Reply

Marsh Posté le 15-12-2005 à 15:34:21    

y'avais pas que les deux :D
 
nan, c'est surtout qu'on avait plus un thune, plus un client, et que tout le monde s'est jeté dessus et on lui a offert une caisse de vaseline et il a sû en fait bon usage :D

Reply

Marsh Posté le 15-12-2005 à 15:35:36    

C'est quoi ta boite, j'ai un projet pour vous !!! :)


Message édité par belldandys le 15-12-2005 à 15:35:56
Reply

Marsh Posté le 15-12-2005 à 15:38:52    

ben j'ai changé de boîte maintenant :p
 
là je fais de la TMA sur un ERP, la cliente est partie faire une formation depuis deux jours, et je m'emmerde comme un rat mort depuis ce matin :D
 
j'avancerais bien sur l'intranet que j'ai commencé à leur faire, mais y'a trop de questions ouvertes, je vais bosser pour rien, faudra tout recommencer (notamment la requête où j'avais posé la question d'un éventuel débordelisage, ça rammène la moitié de la base, donc va falloir qu'on discute un peu pour savoir quels filtres ajouter...)

Reply

Marsh Posté le 15-12-2005 à 15:39:53    

hier, c'était pationnant, je me suis fait un site pour faire des recherches dans "mes documents" en utilisant index server... on s'occupe comme on peut :D

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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