Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

SQLite rang d'une insertion ?

3 réponses
Avatar
Une Bévue
Je recherche le moyen, avec SQLite3, de connaître le rang d'une insertion.
Ce n'est pas le rowid que je cherche mais le rang de la dernière insertion
quand je fais un sélect avec order by.

3 réponses

Avatar
Ph. B.
Une Bévue a écrit :
Je recherche le moyen, avec SQLite3, de connaître le rang d'une insertion.



Je ne comprends pas bien ce que tu veux. :-(
Une insertion d'une ligne dans une table revient à placer une patate
dans un sac : difficile de connaître le "rang" d'insertion de la patate
en question...

Ce n'est pas le rowid que je cherche mais le rang de la dernière insertion
quand je fais un sélect avec order by.



Tu veux dire le rang, suivant le critère de tri donné par la clause
"Order by" (par analogie, je trie mes patates par taille) ?
As tu un jeu d'essai qui permette d'aider à comprendre ton besoin ?
--
Philippe.
Avatar
Une Bévue
On 16/09/2011 17:29, Ph. B. wrote:
Tu veux dire le rang, suivant le critère de tri donné par la clause
"Order by" (par analogie, je trie mes patates par taille) ?



oui, c'est ça, je ne connais pas la taille de la patate inserrée.

en fait j'ai une page qui indique un certain nombre de patates, 18 au
max dans une div de ma page, question de hauteur de page.

donc, au bas de ma page (comme avec une recherche google) j'indique par
numéro d'autres pages possibles, en plus du order by, je fais un offset
limit dans mon sql querry.

après une insertion, j'aimerais aller à la bonne page de 18 patates, càd
connaître le rang de cette patate inserrée.

en fait je peux faire ça en deux étapes :

select * from patates order by taille;

là, par php, je stocke le rang de la patate inserrée, car je connaît son
rowid, càd le numéro de la ligne correspondante dans la base.

Ensuite je peux calculer l'offset qu'il faut pour présenter la patate
concernée et faire un :

select * from patates order by taille offset <l'offset calculé> limit 18;

MAIS, j'aurais aimé faire ça en une seule passe sql symboliquement :

select * from patates order by taille offset <rang de la patate de rowid
= <le rowid> modulo 18> limit 18;


bon, ça n'existe sans doute pas cette possibilité, ou avec un trigger ?
Avatar
Alain Montfranc
Ph. B. avait prétendu :
Une Bévue a écrit :
Je recherche le moyen, avec SQLite3, de connaître le rang d'une insertion.



Je ne comprends pas bien ce que tu veux. :-(
Une insertion d'une ligne dans une table revient à placer une patate dans un
sac : difficile de connaître le "rang" d'insertion de la patate en
question...



Je vois deux solutions (je ne sais pas si sqlite le permet) :
- avoir un champ en autoincrement et recuperer la ligne qui correspond
à la valeur max du compteur (si il s'agit de recuperer l'enregistrement
le + recent)
- gerer un id unique, inserer dans la table avec cet id puis recuperer
les données correspondant à cet id si il s'agit de recuperer les
valeurs entrees par un insert specifique



Ce n'est pas le rowid que je cherche mais le rang de la dernière insertion
quand je fais un sélect avec order by.



Tu veux dire le rang, suivant le critère de tri donné par la clause "Order
by" (par analogie, je trie mes patates par taille) ?
As tu un jeu d'essai qui permette d'aider à comprendre ton besoin ?