/ 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
finde laveste frie id
Fra : Ukendt


Dato : 14-01-03 16:23

Hej

Er det muligt at skrive en select-statement, der returnerer det laveste frie
id i en tabel (id primærnøgle). Hvis jeg f.eks. har tabellen

| id |
| 0 |
| 1 |
| 3 |
| 4 |
| 6 |

vil jeg gerne have returneret 2.

Endnu mere sofistikeret ville det være, hvis jeg ud fra ovenstående tabel
kunne få returneret alle "fire" id's, dvs. de id der er indre end MAX(id).
Resultatet af ovenstående tabel ville være 2 og 5.

På forhånd tak for hjælpen.
/Jeppe



 
 
Jimmy (14-01-2003)
Kommentar
Fra : Jimmy


Dato : 14-01-03 16:42


"Jeppe" <nænej> wrote in message
news:3e242b6a$0$71716$edfadb0f@dread11.news.tele.dk...
> Hej
>
> Er det muligt at skrive en select-statement, der returnerer det laveste
frie
> id i en tabel (id primærnøgle). Hvis jeg f.eks. har tabellen
>
> | id |
> | 0 |
> | 1 |
> | 3 |
> | 4 |
> | 6 |
>
> vil jeg gerne have returneret 2.
>
> Endnu mere sofistikeret ville det være, hvis jeg ud fra ovenstående tabel
> kunne få returneret alle "fire" id's, dvs. de id der er indre end MAX(id).
> Resultatet af ovenstående tabel ville være 2 og 5.


Det kan gøres ret simpelt med sub selects, men dette understøtter MySQL ikke
direkte.
Hvilken database ønsker du dette gjort i?

Mvh
Jimmy



Ukendt (14-01-2003)
Kommentar
Fra : Ukendt


Dato : 14-01-03 17:11

> Det kan gøres ret simpelt med sub selects, men dette understøtter MySQL
ikke
> direkte.
> Hvilken database ønsker du dette gjort i?

Desværre mysql (sammen med php)

vh Jeppe



Peter Brodersen (14-01-2003)
Kommentar
Fra : Peter Brodersen


Dato : 14-01-03 17:02

On Tue, 14 Jan 2003 16:23:26 +0100, "Jeppe" <nænej> wrote:

>Er det muligt at skrive en select-statement, der returnerer det laveste frie
>id i en tabel (id primærnøgle).

Bare af nysgerrighed, hvad er behovet? Generelt er det ikke så
hensigtsmæssigt at genbruge id's.

--
- Peter Brodersen

Ukendt (14-01-2003)
Kommentar
Fra : Ukendt


Dato : 14-01-03 17:13

> Bare af nysgerrighed, hvad er behovet? Generelt er det ikke så
> hensigtsmæssigt at genbruge id's.

Nej det ved jeg godt. Dog ønsker jeg mulighed for at genbruge id's her, da
det er til en php-side, der skal holde lidt styr på mine film. Skulle en
film blive væk, skulle jeg vælge at slette den osv. så vil jeg gerne, at
det/de "frie id" bliver foreslået ved indtastning af en ny film. Det er lidt
lettere at stille dem op, hvis der ikke er "huller" i id'erne ;)

/Jeppe



Jesper Hansen (14-01-2003)
Kommentar
Fra : Jesper Hansen


Dato : 14-01-03 19:30

On Tue, 14 Jan 2003 17:13:13 +0100, "Jeppe" <nænej> wrote:

>Dett er lidt
>lettere at stille dem op, hvis der ikke er "huller" i id'erne ;)

Du kunne også bare lave en kstra kolonne i din tabel hvor du fx
insætter et et-tal hvis det er en film du har og et nul for dem der er
blevet væk og så sortere "nullerne" fra når du kalder dine lister
frem.
Kan sikkert gøres smartere, men det virker.
Med venlig hilsen
Jesper L Hansen

Ukendt (14-01-2003)
Kommentar
Fra : Ukendt


Dato : 14-01-03 19:49

> Du kunne også bare lave en kstra kolonne i din tabel hvor du fx
> insætter et et-tal hvis det er en film du har og et nul for dem der er
> blevet væk og så sortere "nullerne" fra når du kalder dine lister
> frem.
> Kan sikkert gøres smartere, men det virker.

Nå ja, men nu har det mere for lettere at kunne holde styr på mine fysiske
videofilm. Det kan være lidt svært at overskue hvilke der mangler på reolen,
hvis der er for mange "tomme id's" imellem.

/Jeppe



Jesper Brunholm (14-01-2003)
Kommentar
Fra : Jesper Brunholm


Dato : 14-01-03 23:21

Jeppe wrote:
>>Bare af nysgerrighed, hvad er behovet? Generelt er det ikke så
>>hensigtsmæssigt at genbruge id's.
>
> Nej det ved jeg godt. Dog ønsker jeg mulighed for at genbruge id's her, da
> det er til en php-side, der skal holde lidt styr på mine film. Skulle en
> film blive væk, skulle jeg vælge at slette den osv. så vil jeg gerne, at
> det/de "frie id" bliver foreslået ved indtastning af en ny film. Det er lidt
> lettere at stille dem op, hvis der ikke er "huller" i id'erne ;)

Hvis du gerne vil lave arbejdet så er det glimrende, men er du opmærksom
på fx minefilm.dk hvor man let kan lave en oversigt over sin filmsamling...

mvh

Jesper Brunholm


Ukendt (14-01-2003)
Kommentar
Fra : Ukendt


Dato : 14-01-03 23:49

> Hvis du gerne vil lave arbejdet så er det glimrende, men er du opmærksom
> på fx minefilm.dk hvor man let kan lave en oversigt over sin
filmsamling...

hehe ... tja, nu har jeg lavet det. Selve php-kodningen og opsæt af mysql
tog ikke lang tid, og nu har den lige præcis hvad jeg vil (med undtagelse af
det med id -- det kommer ;))

/Jeppe



Bo Rattenbrog (14-01-2003)
Kommentar
Fra : Bo Rattenbrog


Dato : 14-01-03 23:54

> Hvis du gerne vil lave arbejdet så er det glimrende, men er du opmærksom
> på fx minefilm.dk hvor man let kan lave en oversigt over sin
filmsamling...


Så har vi (endnu engang) kørt vores import af data fra IMDB.

Der er kommet:
- 0 nye film
- 0 nye skuespillere




/Bo



Jakob Andersen (14-01-2003)
Kommentar
Fra : Jakob Andersen


Dato : 14-01-03 18:22

"Jeppe" <nænej> wrote
> Er det muligt at skrive en select-statement, der returnerer det laveste
frie
> id i en tabel (id primærnøgle). Hvis jeg f.eks. har tabellen
>
> | id |
> | 0 |
> | 1 |
> | 3 |
> | 4 |
> | 6 |
>
> vil jeg gerne have returneret 2.

Brug nedenstående med en LIMIT 1

> Endnu mere sofistikeret ville det være, hvis jeg ud fra ovenstående tabel
> kunne få returneret alle "fire" id's, dvs. de id der er indre end MAX(id).
> Resultatet af ovenstående tabel ville være 2 og 5.

Du kan lege lidt med denne her:

SELECT
t1.<id kolonne>+1, t2.<id kolonne>
FROM
<dintabel> t1 LEFT JOIN <dintabel> t2 ON t1.<id kolonne>+1 = t2.<id
kolonne>
WHERE
t2.<id kolonne> IS NULL

Tilføj evt. en LIMIT clause hvis du kun vil have det første id.

--
Jakob Andersen



Jakob Andersen (14-01-2003)
Kommentar
Fra : Jakob Andersen


Dato : 14-01-03 18:33

"Jakob Andersen" <jakob@effectus.dk> wrote
> SELECT
> t1.<id kolonne>+1, t2.<id kolonne>
> FROM
> <dintabel> t1 LEFT JOIN <dintabel> t2 ON t1.<id kolonne>+1 = t2.<id
> kolonne>
> WHERE
> t2.<id kolonne> IS NULL

Og ovenstående virker selvfølgelig ikke hvis det/de tomme værdi(er) ligger
før noget andet i tabellen. Altså hvis du har f.eks.: 7,8,9,10 vil forslaget
til idnummer blive 11.

--
Jakob Andersen



Ukendt (14-01-2003)
Kommentar
Fra : Ukendt


Dato : 14-01-03 19:51

> Og ovenstående virker selvfølgelig ikke hvis det/de tomme værdi(er) ligger
> før noget andet i tabellen. Altså hvis du har f.eks.: 7,8,9,10 vil
forslaget
> til idnummer blive 11.

Hej Jakob

Tak for forslaget .. tror det kan bruges. At den ikke fanger 1,2,3...6 i
ovenstående eksempel må jeg kunne løse ved også lige at hive MIN(id) ud og
beregne de resterende herfra.

/Jeppe



Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408849
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste