Avatar billede ducks Nybegynder
27. september 2006 - 22:45 Der er 10 kommentarer og
1 løsning

Sænke alle værdier med 1

Jeg har lidt problemer med den her SQL kode, jeg er dog heller ikke sikker på at den er helt lovlig:

UPDATE tables SET table_number = table_number - 1 WHERE table_number > " & int_table_number


Det bruges til at sørge for at bordene i en bordplan altid er listet i rækkefølge uden mellemrum imellem selvom man sletter fx nr 3.

I kan se her, hvordan bordene opfører sig når bord 3 bliver slettet:

Før: http://img78.imageshack.us/img78/4691/fron5.jpg
Efter: http://img74.imageshack.us/img74/1018/efterdl2.jpg

Spørg endelig hvis det ikke er tilstrækkelig info for at hjælpe.
Avatar billede ducks Nybegynder
27. september 2006 - 22:48 #1
Jeg kan lige tilføje:

Når bord 3 bliver slettet, slettes bord 3:

"DELETE * FROM tables WHERE table_number = " & int_table_number // her er table int_table_number = 3

Og så bliver alle borde over bord 3 sænket 1 i bordnr:

"UPDATE tables SET table_number = table_number - 1 WHERE table_number > " & int_table_number


Men af en eller anden grund overtager bord 4 nu bord 3's gamle position (altså nogle af dens records), jeg forstår det ikke da den burde være slettet.
Avatar billede ellebaek Nybegynder
27. september 2006 - 22:52 #2
er det ikke fordi du ikke får slettet alle relationerne til det bord du er i gang med..?
altså om du har nogle informationer gemt i en anden tabel som så bliver overtaget af det nye bord...?
Avatar billede ducks Nybegynder
27. september 2006 - 23:03 #3
Det har jeg svært ved at se, hvad det skulle være, men hvis jeg udelader koden hvor bordnumrene bliver sænket med 1 så giver det ingen problemer (bortset fra at numrene skal sænges selvf)
Avatar billede a1a1 Novice
27. september 2006 - 23:11 #4
UPDATE tables SET table_number = table_number - 1 WHERE table_number > " & int_table_number
den er "lovlig".... du opdaterer alle borde hvor nummert (table_number) er over int_table_number (men det er ikke det du vil have)
Avatar billede a1a1 Novice
27. september 2006 - 23:12 #5
eller??
Avatar billede a1a1 Novice
27. september 2006 - 23:13 #6
hvordan er dine relationer mellem tabellerne???
Avatar billede a1a1 Novice
27. september 2006 - 23:16 #7
UPDATE tables SET table_number = table_number - 1 WHERE table_number > " & int_table_number & " and table_number<>table_number
Avatar billede ducks Nybegynder
27. september 2006 - 23:17 #8
Hvad tænker du på mht relationer mellem tabellerne?

Jo jeg vil gerne have sænket nummeret for alle borde, hvor bordnr er højere end det der bliver slettet.

table_number er unik


Hvis der fx er en liste borde: 1,2,3,4,5
Og bord 4 bliver slettet, så skal 5 nemlig "rykkes ned", så det er: 1,2,3,4(som før var 5)
Avatar billede ellebaek Nybegynder
27. september 2006 - 23:18 #9
men har du ikke en tabel mere der indeholder oplysninger om hvor bordene er placeret eller noget i den stil...?
Avatar billede ducks Nybegynder
27. september 2006 - 23:24 #10
Jeg har den der hedder tables som indeholder table_number, id, hvor mange der kan sidde der, hvor stort det er og koordinaterne.
Avatar billede ducks Nybegynder
23. november 2006 - 14:02 #11
.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester