simenss Skrevet 25. desember 2004 Del Skrevet 25. desember 2004 Jeg har tre tabeller i min mySQL-database. Hver tabell inneholder filer med forskjellige id’er. Men når jeg bygget opp tabellene ble mange av filene slettet, og mange id’er står nå tomme. Det har blitt utrolig rotete, og jeg vil nå rydde opp i rotet. Derfor vil jeg nå, at hver gang jeg legger ut en ny fil, henter den automatisk den laveste id’en som er ledig. Det er viktig at filene som allerede er i databasen ikke får endret sin id, siden den er en del av filens filnavn. Men hvordan gjør jeg det? Lenke til kommentar
Klette Skrevet 25. desember 2004 Del Skrevet 25. desember 2004 Du kan jo alltids lage et cleanup script... load alle feltene inn i en array, og legg inn alt på nytt... Lenke til kommentar
Xqtor Skrevet 25. desember 2004 Del Skrevet 25. desember 2004 Hvorfor bruker du ikke auto_increment på ID'en i første omgang? Lenke til kommentar
mamort Skrevet 25. desember 2004 Del Skrevet 25. desember 2004 Siden du ikke "vet" nøyaktig hvilke ID'er som er ledig så må du nødvendigvis gjøre en egen query slik: F.eks. (mysql syntax litt rusten, men du skjønner hvor jeg vil) select <yourID> from <table> where <emptyField>="" order by <yourID> ASC; Den vil (forhåpentligvis) velge ut de ID'ene som er tomme i ascending (minste først) rekkefølge. Da kan du bare benytte deg av den ID'en som finnes i den første posten som ble hentet ut. Synes forøvrig forslaget om et eget "cleanup" script er en bedre løsning... Lenke til kommentar
Torbjørn Skrevet 25. desember 2004 Del Skrevet 25. desember 2004 Jeg tror du tenker i feil baner. ID-feltet skal kun gi rader en unik identifikator. Ikke noe annet. At de således ikke følger nødvendigiv i rekkefølge er irrelevant. Hvis du mener du trenger en teller som teller fra 1 til 10 uten opprom, så er det noe annet enn den unike id'en du er ute etter. Lag deg en kolone som gjør nettopp dette. alter table tabellnavn add column teller int unsigned; set @i:=0; update tabellnavn set teller=@i:=@i+1; Lenke til kommentar
simenss Skrevet 25. desember 2004 Forfatter Del Skrevet 25. desember 2004 (endret) Skal prøve å forklare litt bedre: Her er tabellene med dataene: (alle navnene er forskjellige) Tabell01: id:1,navn:x id:2,navn:x id:5,navn:x Tabell02: id:7,navn:x id:8,navn:x id:12,navn:x Tabell03: id:13,navn:x id:17,navn:x id:20,navn:x Adressen til filene er <id>.exe, så id'en til hvert fil kan ikke endres. Derfor kan jeg ikke bruke auto_increment. Jeg sletter også til tider filer. Som du ser er den laveste id'en som er ledig blant de tre tabellene 3, så 4,6,9,10,11 osv. Et "cleanup"-script er en grei ide, men da må den endre mange av navnene på selve filene på serveren. Og i min virkelige database er det flere tusen filer. EDIT: Tenkte noe som dette: SELECT * FROM Tabell01,Tabell02,Tabell03 WHERE id='IKKE FINNES' ORDER BY id ASC Vet at denne spørringen ikke vil fungere, men den "forklarer" litt hva jeg prøver å si Endret 25. desember 2004 av simenss Lenke til kommentar
laaknor Skrevet 25. desember 2004 Del Skrevet 25. desember 2004 Å gjenbruke en ID er en dårlig ide uansett. Det kan ligge referanser til IDen andre steder (f.eks. i en tabell for kommentarer fra brukere el.l.). Bruk auto_increment, og gi filene navn etter IDen fra mysql. Lenke til kommentar
Torbjørn Skrevet 25. desember 2004 Del Skrevet 25. desember 2004 Enig, det virker som en dårlig ide å bruke filnavn som id. lag deg en id uavhengig av filnavn og alt annet. en id skal ikke være noe annet enn en unikt identifiserende karakteristika. id'er skal heller ikke trenge å følge noe eksternt "skjema", eks. ha kontinnuerlig stigende tall uten hull. filer kan dessuten endre navn. Lenke til kommentar
laaknor Skrevet 25. desember 2004 Del Skrevet 25. desember 2004 Enig, det virker som en dårlig ide å bruke filnavn som id. lag deg en id uavhengig av filnavn og alt annet. en id skal ikke være noe annet enn en unikt identifiserende karakteristika. id'er skal heller ikke trenge å følge noe eksternt "skjema", eks. ha kontinnuerlig stigende tall uten hull. filer kan dessuten endre navn. Sånn jeg har forstått det er det omvendt, han bruker IDen som filnavn, men vil kunne bruke samme IDen flere ganger.... En annen ting: hvorfor har du tre forskjellige tabeller som alle sammen har filer? en tabell må da holde, og så har du tre forskjellige kategorier filene kan havne i? Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå