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

Renumerotation

6 réponses
Avatar
WebShaker
Salut je me demande s'il y a moyne de renumeroter automatique un table

par exemple j'ai une table
CREATE TABLE data (
iddata serial,
my_num interger ,
my_date timestamp
);

j'aimerai faire un
SELECT * FROM data ORDER BY my_date

Puis inserer l'ordre dans la colonne my_num.

C'est possible de faire ca en une seule requete en SQL ?

Merci
Etienne

6 réponses

Avatar
Sebastien Lardiere
Le 23/03/2010 13:57, WebShaker a écrit :
Salut je me demande s'il y a moyne de renumeroter automatique un table

par exemple j'ai une table
CREATE TABLE data (
iddata serial,
my_num interger ,
my_date timestamp
);

j'aimerai faire un
SELECT * FROM data ORDER BY my_date

Puis inserer l'ordre dans la colonne my_num.

C'est possible de faire ca en une seule requete en SQL ?




Bonjour,

Sous PostgreSQL( je suppose ? ) , en version 8.4, il y a les window
functions : http://www.postgresql.org/docs/8.4/static/functions-window.html

Ici, row_number() ferait l'affaire.

Je ne détaille pas plus, mais c'est l'idée ...

--
Sébastien
Avatar
Mickaël Wolff
WebShaker a écrit :
Salut je me demande s'il y a moyne de renumeroter automatique un table



Quelle base de données ?

--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org
Avatar
Bruno Baguette
Le 23/03/10 16:38, Mickaël Wolff a écrit :
WebShaker a écrit :
Salut je me demande s'il y a moyne de renumeroter automatique un table



Quelle base de données ?



Connaissant Etienne (il poste régulièrement ici), c'est du PostgreSQL.

--
Bruno Baguette
Avatar
WebShaker
Ici, row_number() ferait l'affaire.



Ah génial.
J'avais fini pas faire une fonction dans postgres...

Je vais essayer row_number()
il se trouve que je me suis justement installer postgres 8.4 récement :)

Merci
Etienne
Avatar
WebShaker
Connaissant Etienne (il poste régulièrement ici), c'est du PostgreSQL.



;)
Oui en Effet il s'agit bien de postgresql
Etienne
Avatar
WebShaker
Bon ben ca marche super bien, même si cela n'a pas été une simple affaire a
utiliser

donc la table est la suivante


CREATE TABLE data (
iddata serial,
my_num interger ,
my_date timestamp
);

pour selectionner les enregistrements et afficher un numero croissant dans
l'ordre de la data on fait:
SELECT row_number() OVER (ORDER BY my_date) AS posi, * FROM data ORDER BY
my_date;

et pour mettre à jour la colonne my_num, on fait
UPDATE data SET my_num = (SELECT posi FROM (
SELECT iddata, row_number() OVER (ORDER BY my_date) AS posi FROM data
) AS subdata WHERE subdata.iddata = data.iddata);

et ca marche treeeeeeeeeeeeees bien :)

Merci encore.
Etienne

"WebShaker" a écrit dans le message de news:
4baa3a69$0$12110$
Ici, row_number() ferait l'affaire.



Ah génial.
J'avais fini pas faire une fonction dans postgres...

Je vais essayer row_number()
il se trouve que je me suis justement installer postgres 8.4 récement :)

Merci
Etienne