🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: be.comp.programming
2 messages
2 total messages Started by Snuyt Tue, 16 Mar 2004 17:53
delete query
#2776
Author: Snuyt
Date: Tue, 16 Mar 2004 17:53
26 lines
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
#2779
Author: Stijn De Smet
Date: Wed, 17 Mar 2004 07:58
39 lines
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