webForumDet fria alternativet

Knasigt resultat av update

7 svar · 379 visningar · startad av Joakim

JoakimMedlem sedan dec. 199982 inlägg
#1

Tjo,

Begriper inte riktigt varför följande händer:

i en tabell med fyra kolumner är en av kolumnerna avsedd för sortering av data;

id|produkt|sort|text (förenklat exempel)

Om jag tar bort en post så vill jag sedan att de poster som har samma "grupp" och ett högra "sort" än det som raderas skall flyttas upp ett steg, alltså få minska deras värde på "sort" med 1.

UPDATE tabell SET sort = sort - 1 WHERE sort > raderad_posts_sort AND grupp = raderad_posts_grupp

Detta ger att ALLA poster som har högre sort än posten som raderades får samma sort som den raderade posten hade, dock bara de i samma "grupp", så rätt rader påverkas men värdet blir fel.

Kan någon förklara detta?

Engine^Medlem sedan dec. 20003 887 inlägg
#2

Ditt data i sort-kolumnen stämmer inte överens med vad du vill göra?

Kan du ge ett exempel på sort-data från en grupp.

JoakimMedlem sedan dec. 199982 inlägg
#3

Datat i sort-kolumnen är helt numeriskt och används av användaren för att sortera rader för olika produkter. T.ex:

(id|produkt|sort|text)

1|1|1|Rad ett för produkt 1
2|1|2|Rad två för produkt 1
3|1|3|Rad tre för produkt 1
4|1|4|Rad fyra för produkt 1
5|1|5|Rad fem för produkt 1
6|2|1|Rad ett för produkt 2
7|2|2|Rad två för produkt 2

osv..

Tar jag nu bort rad tre, alltså "Rad tre för produkt 1", vill jag ju att sort-värdet för rad fyra och fem skall minskas med ett så att det inte uppstår ett glapp i sorteringen för den gruppen, om jag omsatte exakt detta exemplet i praktiken skulle jag få att både rad fyra och fem får sort-värde 3.

Peter SMedlem sedan dec. 20025 483 inlägg
#4

I vilken programmeringsmiljö (t.ex. PHP) gör du uppdateringarna? Kan det inte vara där felet ligger?

JoakimMedlem sedan dec. 199982 inlägg
#5

Gör det i perl, men mySQL gör ju "uträkningarna"? Scriptet bara buffrar sort-värdet och gruppen för posten den tar bort och har det som vilkor i uppdateringen.

Engine^Medlem sedan dec. 20003 887 inlägg
#6

SQL-satsen du skrev först är ju helt riktig. Är den likadan som den du faktiskt använder dig av? Det verkar inte som så.

Peter SMedlem sedan dec. 20025 483 inlägg
#7

Det kan med andra ord vara av intresse att se relevant Perl-kod.

JoakimMedlem sedan dec. 199982 inlägg
#8

Engine^ skrev:

SQL-satsen du skrev först är ju helt riktig. Är den likadan som den du faktiskt använder dig av? Det verkar inte som så.

Det som förbryllar mig är att det faktiskt är den jag använder. Fattar verkligen inte varför det blir som det blir. Rätt rader påverkas ju, känns bara som att mySQL skolkade från matten i lågstadiet..

128 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)