Ik heb een tabel waar groepen/subgroepen inzitten. Tabel bevat 2 kolommen nl groepId en subgroepVan .

voorbeeld inhoud van de tabel:


groepId          subgroepVan

1                   0
2                   0
3                   1
4                   3



Nu is de vraag, hoe bouw ik mijn SQL query op dat als ik een groep wens te verwijderen hij ook de subgroepen verwijderd.

Mijn Sql kennis is jammergenoeg niet groot genoeg en heb er geen idee van hoe ik dat moet aanpakken.

Bedankt alvast
Door met Foreign keys te werken. Daarvoor heb je of de InnoDB engine van MySQL nodig, of bv pgSQL gebruiken.
Een FOREIGN KEY zorgt ervoor, dat een subgroep alleen aangemaakt kan worden, als de opgegeven id voor de hoofdgroep ook echt bestaat. Ook kan je dan opgeven wat er moet gebeuren als dat id niet meer bestaat (dus wordt verwijdert).

Wat links:
http://dev.mysql.com/doc/refman/5.0/en/innodb-foreign-key-constraints.html
http://www.phphulp.nl/php/tutorials/3/274/504/
kijk eens naar on cascade delete.
InnoDB is geen optie nu...

Heb wat gegoogeld op die cascade delete maar snap er niets van, kan iemand mij wat verderhelpen ?
steeds niets gevonden ... kan er me echt niemand helpen ?
Major Apollo schreef op 08.04.2007 19:15
InnoDB is geen optie nu...

Heb wat gegoogeld op die cascade delete maar snap er niets van, kan iemand mij wat verderhelpen ?
Geen innoDB? Dan zul je een andere database dan MySQL moeten kiezen. De enige engine van MySQL die met relationele databases overweg kan, is innoDB.

Kortom, wat jij wilt, kun je niet in MySQL met SQL oplossen, dat zul je met PHP moeten doen (extra queries en controles maken).

Maar wordt alsjeblieft wakker en ga eens een goede database uitzoeken, bv. het reeds genoemde PostgreSQL. Ben je van een hele hoop gedonder en onzekerheid af.
Ok bedankt frank, kzal het moeten uitdokteren met een php routine dan.

Het valt wel mee hoor. Je wilt een hoofdgroep verwijderen, dus ik neem aan dat je het id weet. Dan doe je gewoon eerst een DELETE query op je subgroepen met in de WHERE condition de hoofdgroep_id. Daarna verwijder je de hoofdgroep.

Ik snap dat de puristen dit niks vinden, maar dat het onmogelijk zou zijn klopt niet.
Jan, ik zei ook niet dat het onmogelijk is, maar dat je het met PHP moet oplossen.

Dus 2 queries versturen en checken of deze zijn gelukt. Mocht echter de 2e query mislukken, dan ben je de klos, er blijven restanten in de database achter die daar helemaal niet horen te staan. Die kunnen uiteindelijk ook weer voor problemen zorgen, afhankelijk van waar deze voor dienen. Je zult dit met de hand moeten verwijderen.

Gebruik gewoon innoDB of een betere database met FK's, dan bestaat dit hele probleem niet.
Frank, is het niet leuk als je een tutorial schrijft hoe je Postgres installeert op je server ism Apache en PHP?
Zal zeker InnoDb bestuderen eens ik de tijd daavoor vind.

Ik ben met aanpassingen bezig op een live server dus ik kon moeilijk zomaar gaan overschakelen op een ander DB systeem met het risoco dat alles platvalt ... plus dat het nog php4 is enz ...

In de realiteit is het meestal zo dat als een syteem werkt laat het dan zo, niet upgraden, geen zware aanpassingen .... (zelf denk ik daar ook wel anders over maja, de ervaring spreekt dit tegen)

Reageren