Toon posts:

[mysql] database brak?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hier even een vraagje.. :D

heb momenteel een database met een tabel user. Daar staan momenteel iets van 3750 users in. Maar nou is er een klein probleempje opgetreden.. :D

Ik heb laatst ongeveer 250 leden verwijderd. Nu zitten er dus wat gaten in de database. Om de een of andere reden gaat hij nu bij het toevoegen van nieuwe users de gaten opvullen met users die een veel hoger id hebben.

je krijgt dus zoiets:

id
1
2
3
3086
5

etc...

Daar zit hem het probleem dat ik soms met een query de eerste 500 leden wil hebben of bijvoorbeeld de leden van 2000 tot +- 2500 (gebruik makend van limit 2000,500)

Daar zitten dus nu users tussen die een veel hoger id hebben en er dus niet tussen horen..

Mijn vraag is hoe ik dit kan herstellen en de users weer in een logische volgorde van id kan neerzetten?

  • elgringo
  • Registratie: Januari 2001
  • Laatst online: 01-09 18:17
en als je je query eerst sorteert :?

if broken it is, fix it you should


Verwijderd

Topicstarter
ja maar dan zitten er alsnog leden tussen die er niet tussen horen.. alleen die staan dan achteraan.. ik wil ze dus gewoon helemaal niet hebben....

  • Grum
  • Registratie: Juni 2001
  • Niet online
ik zou een integer veld gebruiken :D

  • Orphix
  • Registratie: Februari 2000
  • Niet online
Wat je wilt is een goed design.
Een ID is alleen bedoeld als uniek identificatie middel. Als je aan dat id nog verdere waarde gaat hangen (bv id > 4000 zijn kinderen < 4000 zijn volwassenen) dan moet je het over een andere boeg gooien.

Ik zie het probleem niet echt?

Verwijderd

Topicstarter
Op vrijdag 17 mei 2002 23:28 schreef Orphix het volgende:
Wat je wilt is een goed design.
Een ID is alleen bedoeld als uniek identificatie middel. Als je aan dat id nog verdere waarde gaat hangen (bv id > 4000 zijn kinderen < 4000 zijn volwassenen) dan moet je het over een andere boeg gooien.

Ik zie het probleem niet echt?
Het probleem is als volgt.. Stel ik wil bijvoorbeeld de eerste 500 leden uit me query krijgen. Die krijg ik nu dus niet.. Omdat er leden tussen zitten die net geregd hebben.. Dat komt doordat ze die gaten opvullen... Dat is niet de bedoeling...

ik krijg nu dus ook een lid met id 3086 terug... en dat wil ik niet..

eigenlijk wil ik gewoon dat alles weer prima op volgorde van id komt te staan... :D

Verwijderd

Topicstarter
Op vrijdag 17 mei 2002 23:28 schreef Grum het volgende:
ik zou een integer veld gebruiken :D
Hoe bedoel je dat?
Dat id veld is een integer....??

  • Orphix
  • Registratie: Februari 2000
  • Niet online
Op vrijdag 17 mei 2002 23:31 schreef DiStance het volgende:
Het probleem is als volgt.. Stel ik wil bijvoorbeeld de eerste 500 leden uit me query krijgen. Die krijg ik nu dus niet.. Omdat er leden tussen zitten die net geregd hebben.. Dat komt doordat ze die gaten opvullen... Dat is niet de bedoeling...

ik krijg nu dus ook een lid met id 3086 terug... en dat wil ik niet..

eigenlijk wil ik gewoon dat alles weer prima op volgorde van id komt te staan... :D
Wat is 'eerste 500 leden' ?
Zijn dat de 500 oudste leden? De top 500 scoorders?

De eerste 500 id's is net zoiets als de eerste 500 willekeurige mensen op straat vragen, het duidt niks aan.

Verwijderd

Topicstarter
de eerste bedoel ik mee de eerste mensen die geregd hebben.. de id's 1-500 dus..

Nou kan het zijn dat er wat mensen uitgegooid zijn.. dan wordt het dus een range van stel even 1-530 ofzo.. is maar voorbeeldje..

het gaat er dus om dat ik een range in kan stellen wat die gebruikers wel mogen.. niet mbt tot het betreden van een stuk van de site ofzo.. maar het gaat erom dat alleen die leden bijvoorbeeld op een link mogen klikken..

Nou is het dus zo dat ik dus gewoon de eerste 500 records bijvoorbeeld uit de database wil hebben.. dat behoren dus de eerst geregistreerde leden te zijn.. maar er staan dus ook id's tussen als 3086 en die wil ik er niet tussen hebben.. want die hebben zich later geregistreerd en horen dus niet bij de eerste 500 leden..

iets duidelijker al? :D

en omdat ik niet weet hoeveel er tussen de 1-500 uitgegooid zijn.. kan ik dus niet zeggen where id < 530 ofzo.. want het kan net zo goed 540 zijn..

is er niet een methode hoe ik alle id's weer goed op volgorde kan zetten?

  • bras
  • Registratie: Oktober 2000
  • Laatst online: 13-08 14:08
code:
1
2
3
4
select * 
from   tabel
order  by id
limit  500

zo iets dergelijks?

"When you find yourself in the company of a halfling and an ill-tempered Dragon, remember, you do not have to outrun the Dragon...you just have to outrun the halfling."


  • Daan
  • Registratie: Februari 2000
  • Laatst online: 06-09 21:06
SELECT * FROM [table] WHERE id < 500

:?
(mijn eerste P&W posting geloof ik, reken me er niet op af :D)

  • xshredx
  • Registratie: Maart 2001
  • Laatst online: 06-09 16:36

xshredx

 

brak databasemodel.
Een id is een id: een uniek identificatie-middel voor een record, en dat is het dan.
Misschien moet je voor jou toepassing maar een veld toevoegen dat tijdstip van registratie bijhoudt of zo?

Dit heeft niets te maken met mysql die brakke database zou zijn, je hebt enkel niet goed nagedacht over wat je met je data wou doen vooraleer je die in je database pompte.

En voor de rest: id's blijven toch oplopen? dus een select * order by id limit 0,500 levert toch ook de 500 oudste op die op dit moment nog in je database zitten?

Verwijderd

Topicstarter
Op vrijdag 17 mei 2002 23:42 schreef bras het volgende:
code:
1
2
3
4
select * 
from   tabel
order  by id
limit  500

zo iets dergelijks?
ik wou dat ik je een kus mocht geven ;) :P :D

nee hartstikke bedankt.. beetje dom van me dat ik daar niet aan gedacht heb :P

  • Orphix
  • Registratie: Februari 2000
  • Niet online
Op vrijdag 17 mei 2002 23:42 schreef Phreak het volgende:
SELECT * FROM [table] WHERE id < 500

:?
(mijn eerste P&W posting geloof ik, reken me er niet op af :D)
Hmm ja de access invloeden zijn duidelijk merkbaar >:)
maareh je bent dus de ORDER BY vergeten ;)

Maar zoals xshredx al zegt, je dbmodel is brak. Ik zou gewoon een extra veld toevoegen dat een nummer kan bevatten. Dit veld noem je 'lidId'. Dit nummer moet je dan bij het invoeren van een nieuw lid opgeven (immers je wilt het niet automatisch in laten voeren).
Je kan natuurlijk ook je oorspronkelijke id gewoon niet auto_numeric maken. (moet je wel zorgen dat je geen dubbele waardes hebt)

  • bras
  • Registratie: Oktober 2000
  • Laatst online: 13-08 14:08
no problem >:)

"When you find yourself in the company of a halfling and an ill-tempered Dragon, remember, you do not have to outrun the Dragon...you just have to outrun the halfling."


Verwijderd

Topicstarter
Op vrijdag 17 mei 2002 23:44 schreef xshredx het volgende:
brak databasemodel.
Een id is een id: een uniek identificatie-middel voor een record, en dat is het dan.
Misschien moet je voor jou toepassing maar een veld toevoegen dat tijdstip van registratie bijhoudt of zo?

Dit heeft niets te maken met mysql die brakke database zou zijn, je hebt enkel niet goed nagedacht over wat je met je data wou doen vooraleer je die in je database pompte.

En voor de rest: id's blijven toch oplopen? dus een select * order by id limit 0,500 levert toch ook de 500 oudste op die op dit moment nog in je database zitten?
zeker wel dat ik daarover nagedacht heb.. dacht alleen dat ik me eigen database model had vern**kt... maargoed had gewoon niet helemaal goed nagedacht dus over de functies die mysql allemaal te bieden had.. zat hier niet mysql af te rekenen, maar me eigen model.. wat achteraf dus niet nodig bleek te zijn

  • smaij
  • Registratie: November 2000
  • Laatst online: 07-09 20:29
ORDER BY ID LIMIT BLA, BLA :?

Verwijderd

Topicstarter
Op vrijdag 17 mei 2002 23:46 schreef Orphix het volgende:

[..]

Hmm ja de access invloeden zijn duidelijk merkbaar >:)
maareh je bent dus de ORDER BY vergeten ;)

Maar zoals xshredx al zegt, je dbmodel is brak. Ik zou gewoon een extra veld toevoegen dat een nummer kan bevatten. Dit veld noem je 'lidId'. Dit nummer moet je dan bij het invoeren van een nieuw lid opgeven (immers je wilt het niet automatisch in laten voeren).
Je kan natuurlijk ook je oorspronkelijke id gewoon niet auto_numeric maken. (moet je wel zorgen dat je geen dubbele waardes hebt)
Ook dat is dus niet nodig.. het ging er puur en alleen om dat ik dus geen 'ranzige' nummers kreeg.. maar gewoon de gene die ik opgaf :P

en dat werkt nu prima met die order by.. gewoon niet nagedacht dus voordat ik wat ging doen net :D

Verwijderd

Topicstarter
Op vrijdag 17 mei 2002 23:50 schreef smaij het volgende:
ORDER BY ID LIMIT BLA, BLA :?
geloof dat die al is langs geweest ;)

Slotje maar mensen.. tis opgelost.. thnx

  • Daan
  • Registratie: Februari 2000
  • Laatst online: 06-09 21:06
Op vrijdag 17 mei 2002 23:46 schreef Orphix het volgende:

[..]

Hmm ja de access invloeden zijn duidelijk merkbaar >:)
maareh je bent dus de ORDER BY vergeten ;)
Geleerd bij Informatica :X :X
Thanks voor de tip ;)
Pagina: 1