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

 


Dernière réponse
Sujet : [SQL] Récupérer l'élément suivant dans une table
joce

potiron a écrit a écrit :

soit tu te debrouilles pour garder un champ dont les valeurs seront connu et tanpis si tu dois le mettre a jour apres chaque effacement soit tu te sert de ce que tu as  :D et la c'est tout con :
 
SELECT id FROM table where id > idprecedent limit 1  




heu ouais, mais fo pas oublier l'order by sinon ca peut te sortir une réponse erroné vu qu'il prends la première valeur > idprecedent qu'il trouve (et c'est pas forcement la plus petite :p)
 
Donc je propose :
 
SELECT id FROM table where id > idprecedent ORDER BY id ASC limit 1  
et pour le précédent :
 
SELECT id FROM table where id < idprecedent ORDER BY id DESC limit 1


Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
joce

potiron a écrit a écrit :

soit tu te debrouilles pour garder un champ dont les valeurs seront connu et tanpis si tu dois le mettre a jour apres chaque effacement soit tu te sert de ce que tu as  :D et la c'est tout con :
 
SELECT id FROM table where id > idprecedent limit 1  




heu ouais, mais fo pas oublier l'order by sinon ca peut te sortir une réponse erroné vu qu'il prends la première valeur > idprecedent qu'il trouve (et c'est pas forcement la plus petite :p)
 
Donc je propose :
 
SELECT id FROM table where id > idprecedent ORDER BY id ASC limit 1  
et pour le précédent :
 
SELECT id FROM table where id < idprecedent ORDER BY id DESC limit 1

gizmo OK, mais dans ce cas, c'est parce que tu un un ordre implicite sur ton index primaire.
ethernal

gizmo a écrit a écrit :

Limit se copose de 1 ou 2 parametres.
avec 1 parametre, il indique le nombre d'enregistrement a prendre.
avec 2 parametre, le 2eme indique toujours le nombre d'enregistrement a prendre, mais le premier indique la valeur du premier indice. Ce cas n'est valable qu'après une condition de classement ORDER BY  




 
je ne suis pas tout à fait d'accord avec toi :
si tu as 2 valeurs (LIMIT 20,30), la première indique que la requête renverra les résutlats à partir de la 20ième ligne et qu'elle en prendra 30 --> du 20ième au 50ième
pas spécialement besoin d'order by.

gizmo Limit se copose de 1 ou 2 parametres.
avec 1 parametre, il indique le nombre d'enregistrement a prendre.
avec 2 parametre, le 2eme indique toujours le nombre d'enregistrement a prendre, mais le premier indique la valeur du premier indice. Ce cas n'est valable qu'après une condition de classement ORDER BY
Bonhomme

potiron a écrit a écrit :

soit tu te debrouilles pour garder un champ dont les valeurs seront connu et tanpis si tu dois le mettre a jour apres chaque effacement soit tu te sert de ce que tu as  :D et la c'est tout con :
 
SELECT id FROM table where id > idprecedent limit 1  




 
Petite question c'est quoi ce "limit 1" c'est pour limiter à 1 le nombre de réponses ? Parce que j'ai pas trouvé cette identifiant dans le SQL User Guide de Sybase ?
 
Bonhomme

PIIBurner Oki! J'ai remplacé mon système d'index, c'est nickel chrome!!! Merci à tous et joyeux Noël!!!
PIIBurner Oauip, c'est cool aussi ça!
 
Mon système avec gestion de position fonctionne bien. Ceci dit, cela m'oblige à passer 2 paramètres dans l'url, donc ta solution est meilleure, vu qu'il n'y a qu'un seul paramètre.
potiron soit tu te debrouilles pour garder un champ dont les valeurs seront connu et tanpis si tu dois le mettre a jour apres chaque effacement soit tu te sert de ce que tu as  :D et la c'est tout con :
 
SELECT id FROM table where id > idprecedent limit 1
Bonhomme

PIIBurner a écrit a écrit :

Bonjour,
 
J'explique le problème.
J'ai une table contenant des records indexés, avec un id incrémenté automatiquement. A partir de n'importe quel record je voudrais pouvoir récupérer les records précédents et suivants.
 
Je ne peux pas me servir de l'id car si un record a été inséré puis effacé, les id ne sont plus continus (en clairs, je peux avoir les records avec les id 1, 4 et 12 qui se suivent...)
 
Quelle est la requette SQL (ou autre méthode) permettant de contourner ce problème...
 
Par ailleurs, si certains d'entre vous ont des bonnes URL pour des sites SQL, je susi preneur. J'ai trouvé pas aml de sites, mais jamais rien de transcendant.
 
Merci d'avance et joyeux Noël!  




 
 
Tu peux un truc du genre
select max(ton_id) from ta_table where ton_id < id_de_ref
et
select min(ton_id) from ta_table where ton_id > id_de_ref
 
Avec la première requête tu as l'id précédent et avec la seconde
tu as l'id suivant
 
Voili voilo
 
Bon Noël à tous
 
Bonhomme

PIIBurner Oki merci. Pour l'instant je suis en train de le faire en gérant un index de position et en utilisant la commande SQL "LIMIT".
 
L'index de position me permet de connaître l'endroit où je suis dans la base, sans présumer de l'index, et avec LIMIT, je récupère l'id du champ suivant. C'est un peu relou pour gérer l'index, mais bon, ça le fait à priori...
Oreste Regarde ici tu trouveras peut etre ton bonheur  
 
http://www.multimania.com/sqlpro/
PIIBurner Bah, la date ne résout pas le problème...
 
Le coeur de la chose, c'est qu'à partir d'un record donné, j'ai besoin de retrouver celui qui le précède et celui qui le suit, sans présumer des valeurs qu'ils peuvent contenir!!! C'est là tout le problème!!!...
Oreste Tu as pensé a les datés ?
PIIBurner Bonjour,
 
J'explique le problème.
J'ai une table contenant des records indexés, avec un id incrémenté automatiquement. A partir de n'importe quel record je voudrais pouvoir récupérer les records précédents et suivants.
 
Je ne peux pas me servir de l'id car si un record a été inséré puis effacé, les id ne sont plus continus (en clairs, je peux avoir les records avec les id 1, 4 et 12 qui se suivent...)
 
Quelle est la requette SQL (ou autre méthode) permettant de contourner ce problème...
 
Par ailleurs, si certains d'entre vous ont des bonnes URL pour des sites SQL, je susi preneur. J'ai trouvé pas aml de sites, mais jamais rien de transcendant.
 
Merci d'avance et joyeux Noël!

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)