webForumDet fria alternativet

sortering av position vid INSERT

Databaser & SQL

5 svar · 309 visningar · startad av tlee

Medlem sedan mars 2001290 inlägg
Frågan#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?

Medlem sedan dec. 200012 464 inlägg
#2

Gör en update innan du gör insert

update t set pos = pos + 1 where pos >= 3
Medlem sedan dec. 20025 483 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 ;)

Medlem sedan mars 2001290 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

Medlem sedan dec. 200012 464 inlägg
#5

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

Medlem sedan mars 2001290 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.

248 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
118 ms — deklarationer (db)
0 ms — hämta statistik (cache)
121 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)