webForumDet fria alternativet

sortering av position vid INSERT

5 svar · 309 visningar · startad av tlee

tleeMedlem sedan mars 2001293 inlägg
#1

hej, jag har ett antal artiklar som har ett positionsfält för sortering.

1 bil
2 båt
3 hund
4 katt
5 fågel

jag vill kunna lägga in artikel på t.ex position 3, då skall de efterföljande
posternas position ökas med +1

1 bil
2 båt
3 dator
4 hund
5 katt
6 fågel

hur löser man detta smidigast?

LarsGMedlem sedan dec. 200012 465 inlägg
#2

Gör en update innan du gör insert

update t set pos = pos + 1 where pos >= 3
Peter SMedlem sedan dec. 20025 484 inlägg
#3

Du borde väl kunna göra så här:

update tabell t
   set t.pos = t.pos + 1
 where t.pos >= 3

insert
   into tabell (pos, descr)
 values (3, 'dator')

Sedan är det bara att sortera på pos när du hämtar informationen:

order by pos

Red./ LarsG hann visst före ;)

tleeMedlem sedan mars 2001293 inlägg
#4

nu vid DELETE

tackar, det funkar förträffligt.

låt säga jag tar bort en artikel, hur blir sql:en då? om jag skickar med positionsnummret på den artikel som skall plockas bort.

/t

LarsGMedlem sedan dec. 200012 465 inlägg
#5

Vid delete så behöver du inte göra något mer än delete.

tleeMedlem sedan mars 2001293 inlägg
#6

om jag har fyra artiklar med pos 1,2,3,4 och tar bort nummer tre kommer dom resterande ha 1,2,4 ... sorteringen kommer visserligen funka så det kanske inte spelar någon roll..

låt säga jag gör en UPDATE och byter position på en artikel, hur löser man det på ett smidigt sätt.

126 ms totalt · 3 externa anrop · cache AV · v20260731051352-full.56cc9887
0 ms — hämta statistik (cache)
0 ms — hämta forumlista (cache)
124 ms — hämta tråd, inlägg och bilagor (db)