Thread View: be.comp.programming
2 messages
2 total messages
Started by Snuyt
Tue, 16 Mar 2004 17:53
delete query
Author: Snuyt
Date: Tue, 16 Mar 2004 17:53
Date: Tue, 16 Mar 2004 17:53
26 lines
1373 bytes
1373 bytes
Hallo stel, je hebt 2 tabellen (access, maar dat speelt hier geen rol): tabel1 id autonumber str text tabel2 id autonumber T1_id number Ik wil nu uit tabel1 die records verwijderen met str="String" EN uit tabel2 de overeenkomstige records (dus met T1_id=id van tabel1) dus iets in de aard van: DELETE FROM tabel1 t, tabel2 u WHERE t.str='String' AND t.id=u.T1_id maar dat werkt dus niet. Weet er iemand de goede manier om dit te doen? bedankt, Snuyt
Re: delete query
Author: Stijn De Smet
Date: Wed, 17 Mar 2004 07:58
Date: Wed, 17 Mar 2004 07:58
39 lines
2170 bytes
2170 bytes
Snuyt wrote:
> Hallo
>
> stel, je hebt 2 tabellen (access, maar dat speelt hier geen rol):
>
> tabel1
> id autonumber
> str text
>
> tabel2
> id autonumber
> T1_id number
>
>
> Ik wil nu uit tabel1 die records verwijderen met str="String" EN uit
> tabel2 de overeenkomstige records (dus met T1_id=id van tabel1)
>
>
> dus iets in de aard van:
>
> DELETE FROM tabel1 t, tabel2 u WHERE t.str='String' AND t.id=u.T1_id
>
> maar dat werkt dus niet. Weet er iemand de goede manier om dit te doen?
>
>
Dat hangt gedeeltelijk af van je database design.
Stel dat het altijd zo is dat alle id's in tabel2 ook in tabel1 voorkomen,
en dus eigenlijk naar een element in t1 verwijzen. Dan is eigenlijk t2.id
een foreign key naar t1.id. Als je design werkt met een foreign key, dan
kun je de delete laten propageren('on delete cascade' of iets dergelijke
meegeven bij de foreign key creatie), en dan kun je gewoon:
DELETE FROM tabel1 WHERE str='String';
In het ander geval zul je het in 2 queries moeten doen:
DELETE FROM tabel2 t WHERE t.id IN (SELECT u.id from tabel1 u WHERE
u.str='String');
DELETE FROM tabel1 WHERE str='String';
--
Stijn De Smet
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads