10 derniers enregsitrements

10 derniers enregsitrements - SQL/NoSQL - Programmation

Marsh Posté le 10-12-2008 à 13:30:47    

Bonjour,
 
Je voudrais afficher les 10 derniers enregistrements selon un tri décroissant sur le  champ1.
 
select champ1, champ2 from table order by id desc limit 10;
 
Si j'exécute :
 
select champ1, champ2 from table order by champ1 desc, id desc limit 10; --> cela ne fonctionne pas.
 
Comment puis-je corriger cela ?
 
Merci bien

Reply

Marsh Posté le 10-12-2008 à 13:30:47   

Reply

Marsh Posté le 10-12-2008 à 13:39:02    

J'ai pas compris, c'est quoi le problème avec la 1ère requête que tu écris là ?


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 10-12-2008 à 13:55:47    

La première requête fonctionne et me renvoie bien les 10 derniers enregistrements.
Je souhaite par contre afficher ces 10 derniers enregistrements par ordre décroissant à partir du critère champ1.

Reply

Marsh Posté le 10-12-2008 à 14:24:34    

Je comprend pas. Tu peux mettre ici un exemple de ce que tu voudrais obtenir ?


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 10-12-2008 à 14:38:09    

Bizarre !
C'est quoi l'erreur exactement ?


---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
Reply

Marsh Posté le 10-12-2008 à 15:28:27    

select champ1, champ2 from table order by champ1 desc, id desc limit 10; --> plus de 10 enregistrements sont affichés, les enregistrements à valeur nulle ne sont pas affichés.
 
select champ1, champ2 from table order by  id desc limit 10, champ1 desc;  --> Erreur : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'champ1 DESC' at line 1

Reply

Marsh Posté le 10-12-2008 à 15:33:10    

esox_ch a écrit :

Je comprend pas. Tu peux mettre ici un exemple de ce que tu voudrais obtenir ?



---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 10-12-2008 à 15:43:23    

id champ1 champ2
1   2563       toto
2  null       titi
3  4698       ceffi
4  null        tutu
5  10       albe
6   2563       toto
7  null       titi
8  4698       ceffi
9  null       tutu
10 10       albe
 
Si je raisonne sur les 5 derniers enregistrements, je voudrai avoir cet affichage là :
 
4698  ceffi
2563 toto
10 albe
0 titi
0 tutu
 
Les 5 derniers enregsitrements classés par ordre décroissant sur le critère champ1
 
 

Reply

Marsh Posté le 10-12-2008 à 15:47:19    

select champ1,champ2 from ta_table order by champ1 desc limit 10;
 
C'est quoi le soucis avec ça ?


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 10-12-2008 à 16:41:47    

Bien, le order by doit se faire sur l'id pour avoir les 10 derniers !! non ?
 
select champ1,champ2 from ta_table order by champ1 desc limit 10;  -> ne me renvoie pas le bon affichage. Il renvoie bien 10 valeurs mais pas les dernières. Dans les 10 enregistrements renvoyés, j'ai des doublons et je n'ai pas les valeurs null de type 0 titi ou 0 tutu

Reply

Marsh Posté le 10-12-2008 à 16:41:47   

Reply

Marsh Posté le 10-12-2008 à 16:43:01    

Le soucis c'est que le tri s'effactue avant de prendre les 10 derniers, lui il veut prendre les 10 derniers puis trier.

Reply

Marsh Posté le 10-12-2008 à 16:45:30    

Code :
  1. SELECT * FROM (
  2.    SELECT id, champ1,champ2
  3.    FROM ta_table
  4.    ORDER BY id DESC LIMIT 10)
  5. ORDER BY champ1 DESC;


Message édité par Alisteroid le 10-12-2008 à 16:46:06
Reply

Marsh Posté le 10-12-2008 à 16:50:34    

J'ai rien dit


Message édité par kao98 le 10-12-2008 à 16:51:01

---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
Reply

Marsh Posté le 10-12-2008 à 16:55:23    

Merci sebondus. Je ne savais pas que l'on pouvait imbriquer des select.
 
J'ai toutefois le retour suivant :
 
Erreur : Every derived table must have its own alias

Reply

Marsh Posté le 10-12-2008 à 16:59:27    

Code :
  1. SELECT * FROM (
  2.    SELECT id, champ1,champ2
  3.    FROM ta_table
  4.    ORDER BY id DESC LIMIT 10) AS ma_table
  5. ORDER BY champ1 DESC;

Reply

Marsh Posté le 10-12-2008 à 17:03:11    

Super ! merci beaucoup sebondus.
Merci également à kao98 et à esox_ch pour l'entraide.

Reply

Sujets relatifs:

Leave a Replay

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