T tlee Medlem sedan mars 2001 290 inlägg Frågan 29 aug. 2005 09:29 #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?
L LarsG Medlem sedan dec. 2000 12 464 inlägg Gör en update innan du gör insert
update t set pos = pos + 1 where pos >= 3
P Peter S Medlem sedan dec. 2002 5 483 inlägg 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 ;)
T tlee Medlem sedan mars 2001 290 inlägg 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
L LarsG Medlem sedan dec. 2000 12 464 inlägg Vid delete så behöver du inte göra något mer än delete.
T tlee Medlem sedan mars 2001 290 inlägg 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.