|
| fennec. | Posté le 23/11/2007 @ 12:09 |
Petit astucien
215 Messages
|
Bonjour a tous,
j'aimerai pouvoir faire une requete qui me prend 3 enregistrments
la requete serait Select * from exemple where id like 'abcdef'
est t-il possible d'améliorer cette requete pour qu'elle me prenne l'enregistrement
précédent et le suivant sachant que la primary key n'est pas un auto-increment
dans le programme sa donnerai
[a href=getNext.do?var=qrvd]precedent[/a] abcdef [a href=getNext.do?var=ertet]suivant[/a]
la solution ne doit pas obligatoirement être une requete mais peut être du code java
ps: la solution ne peut pas être de rapatrier toute les clé primaire dans un tableau
car il y a plus de 20 000rows dans la db et que plusieurs utilisateurs peuvent effectuer
ce traitement en même temps
j'utilise oracle comme data base (je ne sais pas la version d'oracle et il m'est pour le moment impossible de vérifier si le code java pourrai fonctionner j'en suis a l'analyse technique du programme)
|
| |
| |
| Publicité |
|
|
| breizhbugs | Posté le 23/11/2007 à 12:56 |
Astucien
3001 Messages
| Message original par fennec. la requete serait Select * from exemple where id like 'abcdef' [a href=getNext.do?var=qrvd]precedent[/a] abcdef [a href=getNext.do?var=ertet]suivant[/a]
C'est en php que tu appeles ta requete et c'est la partie dans le like qui est variable si j'ai bien compris... je connais pas le php mais peut etre peut tu faire une fonction du style string fonction (string parametre) { string requete = "select * from exemple where id like '" + parametre + "'"; return (execute(requete)); }
|
| |
|
| fennec. | Posté le 26/11/2007 à 10:27 |
Petit astucien
215 Messages
| Bonjour,
non mon application ne sera pas écrite en php
mais en J2EE
oui la partie dans le like est variables
selon cette valeur j'aimerai pouvoir en même temps rapatrié l'enregistrement précendent et le suivant |
| |
|
| breizhbugs | Posté le 26/11/2007 à 11:26 |
Astucien
3001 Messages
| fennec. a écrit :
Bonjour,
non mon application ne sera pas écrite en php
mais en J2EE
oui la partie dans le like est variables
selon cette valeur j'aimerai pouvoir en même temps rapatrié l'enregistrement précendent et le suivant
php ou java ca change rien! Pour rapatrier l'element suivant, il faut avoir un moyen de connaitre l'identifiant précedent et suivant... or si ton identifiant est une chaine de caractere c'est pas facile. De plus si c'est pour rapatrier le precedent et le suivant, je suppose que si on clique sur "suivant" il faudra encore relancer la requete pour rapatrier le suivant etc, alors autant en rapatrier un certain nombre d'un coup pour limiter les accées au serveur de base de donner Sinon ce qui est possible, c'est de rapatrier les resultats 10 par 10 (par exemple), a ton application ensuite de gerer la pagination: SELECT * FROM exemple LIMIT 10, 20 est censée renvoyé les 11 résultats entre les lignes 10 et les lignes 20. (cette fonction ne marche pas sous acces!) |
| |
|
| fennec. | Posté le 27/11/2007 à 10:56 |
Petit astucien
215 Messages
| bonjour,
en effet sa peut être une solution
merci beaucoup
pour la db il n'y a pas de problème ce n'est pas acces |
| |
|
| fennec. | Posté le 27/11/2007 à 12:43 |
Petit astucien
215 Messages
| limit ne fonctionne pas sous oracle
la solution que j'ai trouvé est celle si
dans un premier temps je récupère le numrow de l'enregistrement
select * from (select id_varchar, ROWNUM num from ma_table) where id_varchar like 'abcdef'
en second lieu
select * from (select id_varchar, ROWNUM num from ma_table) where num <= (ma variable java -5) and num >= (ma variable java +5)
y a t-il une autre solution?
celle ci serai un peu compliquée a gérer
Modifié par fennec. le 27/11/2007 12:47 |
| |
|
| breizhbugs | Posté le 27/11/2007 à 13:14 |
Astucien
3001 Messages
| Apparement non, mais peut etre devrais tu poser ta question dans un forum plus spécialisé en programmation/base de données... |
| |
|
| fennec. | Posté le 28/11/2007 à 08:37 |
Petit astucien
215 Messages
|
merci beaucoup
je vais essayer de voir sur un forum pour les data base |
| |
|
|
| Haut de la page |