Avatar billede amtoft Novice
19. juni 2005 - 20:50 Der er 6 kommentarer og
1 løsning

Finde de næste ledige numre

Hej

Jeg har en tabel hvor nogle id's er bygget op med 4 cifre.
De ligger i "blokke".
F.eks.
0100
0101

1000
1001

1201
1202
1203

OSV - tror I forstår hvad jeg mener.
Der er ikke et bestemt antal blokke.

Hvordan får jeg lavet en søgning, så jeg får de næste ledige numre ud?

Altså så der returneres:
0102
1002
1204

Man kan sige at så snart der er et hul i nummerrækkefølgen skal dette nummer udskrives. - Også selv om der kun mangler 1 tal inden næste nummer.
Avatar billede arne_v Ekspert
19. juni 2005 - 21:10 #1
Hvis du laver en tabel med alle numre kan du lave:

SELECT id FROM allemuligenumre WHERE id NOT IN brugtenumre AND id-1 IN brugtenumre
Avatar billede amtoft Novice
19. juni 2005 - 21:14 #2
Men så skal jeg jo fremover vedligeholde 2 tabeller.
Kan det ikke gøres anderledes ("let")?
Avatar billede arne_v Ekspert
19. juni 2005 - 21:17 #3
tror jeg ikke

SELECT er ikke godt til at vælge noget som ikke er i nogen tabel

og du kan vel bare lave allemuligenumretabellen meget stor fra start af
Avatar billede arne_v Ekspert
19. juni 2005 - 21:18 #4
og hvis det er for at lave et id felt uden huller i, så opgiv det - i en fler bruger
sammenhæng vil du være nødt til at låse kraftigt - og performance vil gå i bund
Avatar billede amtoft Novice
19. juni 2005 - 21:32 #5
Åh forstår pludselig bedre hvad du mener ...
Læste det først som om id'erne skulle være ens i begge tabeller
Avatar billede arne_v Ekspert
20. juni 2005 - 21:47 #6
OK ?
Avatar billede amtoft Novice
21. juni 2005 - 15:25 #7
Ja, jeg kaster mig ud i et forsøg ;)
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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