/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
[MYSQL] bytte rundt på data
Fra : Leonard


Dato : 10-12-05 22:08

Jeg har en tabel i MySQL med felterne:

id, tekst, x

id er primær key og autoincrementes ved input.

x fortæller rækkefølgen af data, når jeg henter det ud med:

SELECT tekst FROM tabel ORDER BY x ASC

2, tekst2, 1
3, tekst3, 2
1, tekst1, 3
4, tekst4, 4
5, tekst5, 5

Hvad er den smarte metode til at flytte rundt på x?

Hvis jeg har id og ny_x: id=4 og ny_x=2

Så skal x i id 3 og 1 tælles en op, så x i id 4 kan blive nr 2

Kan det gøres nemt i MySQL eller skal der noget PHP til?

--
med venlig hilsen
Leonard - http://leonard.dk/

 
 
Michael Zedeler (11-12-2005)
Kommentar
Fra : Michael Zedeler


Dato : 11-12-05 02:05

Leonard wrote:
> Jeg har en tabel i MySQL med felterne:
>
> id, tekst, x
>
> id er primær key og autoincrementes ved input.
>
> x fortæller rækkefølgen af data, når jeg henter det ud med:
>
> SELECT tekst FROM tabel ORDER BY x ASC
>
> 2, tekst2, 1
> 3, tekst3, 2
> 1, tekst1, 3
> 4, tekst4, 4
> 5, tekst5, 5
>
> Hvad er den smarte metode til at flytte rundt på x?

Det kan gøres i MySQL. Noget i stil med

UPDATE tabel SET x=IF(id=4, 2, IF(x=2, 4, x))
WHERE id=4 OR x=2

Mvh. Michael.
--
Which is more dangerous? TV guided missiles or TV guided families?
Visit my home page at http://michael.zedeler.dk/
Get my vcard at http://michael.zedeler.dk/vcard.vcf

Michael Zedeler (11-12-2005)
Kommentar
Fra : Michael Zedeler


Dato : 11-12-05 13:50

Michael Zedeler wrote:
> Leonard wrote:
>
>> Hvad er den smarte metode til at flytte rundt på x?
>
> Det kan gøres i MySQL. Noget i stil med
>
> UPDATE tabel SET x=IF(id=4, 2, IF(x=2, 4, x))
> WHERE id=4 OR x=2

Eller måske bare

UPDATE tabel SET x=IF(id=4, 2, 4)
WHERE id=4 OR x=2

Det smarte er, at du slet ikke behøver at vide noget om den anden række,
du bytter plads med, andet end dens position (værdien af x). Men husk at
det forudsætter at feltet x ikke indeholder dubletter. Ellers går det galt.

Mvh. Michael.
--
Which is more dangerous? TV guided missiles or TV guided families?
Visit my home page at http://michael.zedeler.dk/
Get my vcard at http://michael.zedeler.dk/vcard.vcf

Leonard (11-12-2005)
Kommentar
Fra : Leonard


Dato : 11-12-05 18:06

Michael Zedeler <michael@zedeler.dk> wrote:

>Det smarte er, at du slet ikke behøver at vide noget om den anden række,
>du bytter plads med, andet end dens position (værdien af x). Men husk at
>det forudsætter at feltet x ikke indeholder dubletter. Ellers går det galt.

Og som jeg læser dine forslag, så skal jeg skrive en helt ny, hvis jeg
vil flytte nr. 3 hen til nr. 5.

Jeg fandt på at give x numrene 2,4,6 ... også lave så den select der
vælger det nye nummer, vælger mellem de ulige 1,3,5,7 ...

Så giver jeg først den valgte id det nye ulige nummer, og så løber jeg
lige striben igennem sorteret efter x og tildeler dem alle nye lige
numre.
Det virker fint og jeg forstår hvad der sker, men det blev så en
løsning i PHP

--
med venlig hilsen
Leonard - http://leonard.dk/

Michael Zedeler (11-12-2005)
Kommentar
Fra : Michael Zedeler


Dato : 11-12-05 20:54

Leonard wrote:
> Michael Zedeler <michael@zedeler.dk> wrote:
>
>
>>Det smarte er, at du slet ikke behøver at vide noget om den anden række,
>>du bytter plads med, andet end dens position (værdien af x). Men husk at
>>det forudsætter at feltet x ikke indeholder dubletter. Ellers går det galt.
>
>
> Og som jeg læser dine forslag, så skal jeg skrive en helt ny, hvis jeg
> vil flytte nr. 3 hen til nr. 5.

Nej. Du skal sætte variablene ind fra PHP.

> Jeg fandt på at give x numrene 2,4,6 ... også lave så den select der
> vælger det nye nummer, vælger mellem de ulige 1,3,5,7 ...
>
> Så giver jeg først den valgte id det nye ulige nummer, og så løber jeg
> lige striben igennem sorteret efter x og tildeler dem alle nye lige
> numre.
> Det virker fint og jeg forstår hvad der sker, men det blev så en
> løsning i PHP

Som sandsynligvis er langsommere.

Mvh. Michael.
--
Which is more dangerous? TV guided missiles or TV guided families?
Visit my home page at http://michael.zedeler.dk/
Get my vcard at http://michael.zedeler.dk/vcard.vcf

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408924
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste