nummer die verwijderd zijn opnieuw toekennen
(kan uit sql geen move doen)
Ok ik ga het proberen uit te leggen.
Ik ben bezig met een project waar ik niet uit kom.
iets met de nummers toekennen aan verenigen wat voor doet niet ter zaken.
ik heb een tabel
vereniging met de waarde
ver_nr
ver_naam
etc
ik hebeen tabel nummers
met de waarde
ver_nr
reeks_van
reeks_tot
vereniging.ver_nr=nummers.ver_nr
De tabel nummer is als volgt gevuld (als voorbeeld)
Ik kan de verenigigen nu nieuwe nummer toekennen aan de hand van de hoogste waarde in de tabel.
(heb query niet bij de hand maar dat was)
select sum (max) from reeks_tot as reeksmax
//aantal nummer mogen verschillend zijn
$aantal nummer = 10
$begin_van = reeksmax +1 //laatste nummer in de tabel +1
$reeks_tot = $begin_van + $aantalnummer // is het begin waarde van de nummers + het aantal nummer.
stel dat we ver_nr 3 nog 10 nummer willen geven zou het worden
(40+1) + 10 -1
// -1 omdat 41 + 10 , 51 is en ik 10 nummer wil toekennen en dat is
41,42,43,44,45,46,47,48,49,50
dan zou de insert worden
insert into nummer (ver_nr, reeks_van, reeks_tot) Values (3, 41,50);
en zou het er zo uit zou uit zien
Maar nu mijn echte vraag
Vereniging 3 wordt verwijderd
dan heb ik in me tabel staan
als ik nu een nieuwe nummer aan een vereniging wil geven begint die gewoon bij 41 (laatste waarde is 40 + 1 )
maar nu heb ik de nummer 21 -30 over want die zijn niet toegekent aan een vereniging.
Nu wil ik dat die nummer ook opnieuw uitgegeven kunnen worden maar hoe kan dat.
had zelf zoeits in gedachten. (CLICKABEL)
hoop dat het duidelijk is.
en vooral dat iemand maar hier mee kan helpen :D
Gewijzigd op 01/01/1970 01:00:00 door The master
De reeks nummers niet meer weeggooien. Maar een extra veld toevoegen met de naam 'bezet'. Je zet daar een 1 in indien het gebruikt is en een 0 indien vrij. Bij een nieuwe toekenning van een reeks kijk je eerst of er een 'bezet=0' is, zo ja updaten met 'bezet=1' en 'ver_nr=het bewuste nummer', zo nee, dan pas weer een nieuwe insert.
En het uitrekenen van een verenigingsnummer is niet nodig, dit kan automatisch door de database geregeld worden.
hij moet automatisch een leeg waarde zoeken tussen reeks_van en reek_tot.
dit is het eerst
ver_nr 3 gaat weg dus reeks 21 tot 30 komt VRIJ.
dan heb ik dit
als ik nu ver 1 nog (bv)10 nummers wil geven krijg ik
maar dat wil ik NIET hij moet eerst het gat tussen 21-30 opvullen.
het moet dus worden
Dus ik moet berekenen wat of er een lege waarde is.
maar hoe snap ik niet :S
SanThe schreef op 07.02.2007 20:39:
De reeks nummers niet meer weeggooien. Maar een extra veld toevoegen met de naam 'bezet'. Je zet daar een 1 in indien het gebruikt is en een 0 indien vrij. Bij een nieuwe toekenning van een reeks kijk je eerst of er een 'bezet=0' is, zo ja updaten met 'bezet=1' en 'ver_nr=het bewuste nummer', zo nee, dan pas weer een nieuwe insert.
Reeks nummer staan niet vast met jou manier werkt het niet als ik bv 15 of 8 of 21 etc aantal nummer wil toekennen
En gewoon lekker overslaan? Want als 31 t/m 40 vrij is en je wilt er 8 toekennen, dan wordt het alleen nog maar lastiger.
SanThe schreef op 07.02.2007 21:27:
En gewoon lekker overslaan? Want als 31 t/m 40 vrij is en je wilt er 8 toekennen, dan wordt het alleen nog maar lastiger.
ja als dat kon had ik gewoon constant achter aan verder gegaan.
als ik er 8 wil toevoegen vind ik het niet erg als er 2 niet gebruikt worden.
maar ja "oude" nummer moeten herbruikt worden eis van school:(.
de rest is af behalve dit punt
dus dan wordt het
als ik 2 nu verwijder en voeg 11-20 aan iemand anders toe krijg ik dit
Hier kan ik ook nog mee leven als dit werkt.
maar nu wil zoeken op gegevens waarvan reeks_van is Reeks_tot + 1
om even mee te beginnen
dus reeks tot = 10 +1 = 11
ik dacht aan
select * from tabel where reeks_van = (reeks_tot +1);
maar dit werkt niet :S
dit moet de alle resultaten laten zien omdat elke reeks_van is de vorige reeks_tot +1
Gewijzigd op 01/01/1970 01:00:00 door the master