Mailinglisten-Archive |
On Fri, Sep 06, 2002 at 05:16:12PM +0200, Beck, Mike wrote:
moin,
<snip>
> es muss auch heissen:
> SELECT `adressen`.`id`
> FROM `adressen`
> LEFT JOIN `dorf_kirche_mitglieder` ON `dorf_kirche_mitglieder`.`adressen_id`
> = `adressen`.`id`
> LEFT JOIN gemeinde_verwaltung_mitglieder ON
> `gemeinde_verwaltung_mitglieder`.`adressen_id` = `adressen`.`id`
> LEFT JOIN vereine_gewerbe ON `vereine_gewerbe`.`adressen_id` =
> `adressen`.`id`
aehm, hatten wir's nicht vom loeschen ?
wenn ich jetzt die aufgabenstellung richtig verstanden habe, geht es
darum, bestimmte unnoetige eintraege ueber mehrere relationen zu loeschen.
z.b. sollen beim loeschen eines user-records auch die daran haengenden
address-records entfernt werden ...
table user: user_id int, firstname text, lastname text
table addr: user_id int, city text, street text, nr text, pcode text
wenn wir jetzt user#23 loeschen saehe das dann so aus:
DELETE FROM user WHERE user_id = 23;
DELETE FROM addr WHERE user_id = 23;
wir koennen es uns aber auch einfacher machen, wenn wir eine
entsprechende delete rule vorher definieren:
CREATE RULE user_del AS ON DELTE TO user DO
DELETE FROM addr WHERE addr.user_id = current.user_id ;
dann wird bei jedem DELETE in 'user' auch der entsprechende
addr-eintrag gekillt.
wir koennen aber auch die addressen einfach drinlassen und hin und
wieder einen gc allen alten muell wegraeumen lassen:
DELETE FROM addr WHERE NOT EXISTS
(
SELECT * FROM user WHERE addr.user_id = user.user_id
);
...
~-n
--
Enrico Weigelt == metux ITS
Webhosting ab 5 EUR/Monat. UUCP, rawIP und vieles mehr.
phone: +49 36207 519931 www: http://www.metux.de/
fax: +49 36207 519932 email: contact_(at)_metux.de
cellphone: +49 174 7066481 smsgate: sms.weigelt_(at)_metux.de
---------------------------------------------------------------------
Diese Mail wurde mit UUCP versandt. http://www.metux.de/uucp/
php::bar PHP Wiki - Listenarchive