|
| 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
| |
|
|