Re: Delete Statement


[ ruban.de ] [ Antworten ] [ Forum ]

Geschrieben von Jürgen am Dezember 02, 2003 um 13:50:

Als Antwort auf Delete Statement geschrieben von MATT on November 27, 2003 um 13:30:

: Hallo,

: ich habe ein Problem mit einem SQL Statement, das unter mysql funktioniert, aber nicht unter DB2.

: Es geht um folgendes:
: Ich habe eine Tabelle documents und eine Tabelle attributes. Wenn ich ein Dokument in documents speichere, dann werden Attribute dazu in der attributes-Tabelle gespeichert. Beide Tabellen sind über eine Spalte docid verbunden, die in beiden Tabellen existiert.
: Jetzt mein Problem:
: Falls ein Dokument aus der Documents-Tabelle gelöscht wurde, möchte ich danach alle Attributes löschen, zu denen es keinen Eintrag in der Documents-Tabelle gibt.

: Unter mySQL funktioniert folgendes:
: DELETE db.attrcountry
: FROM db.attrcountry t2
: LEFT JOIN db.documents t1
: ON t2.docid=t1.docid
: WHERE t1.docid IS NULL

:
: Unter DB2 würde das funktionieren:
: (Allerdings gibt es unter mySql keine SubSelects)
: DELETE FROM DOCPILOT.ATTRCOUNTRY WHERE
: EXISTS(
: select t2.docid from docpilot.attrcountry as t2
: left join docpilot.documents as t1
: on t2.docid = t1.docid
: WHERE t1.docid IS NULL)

:
: Gibt es ein Statement, das für beide Datenbanken funktioniert?

: Kann mir da jemand helfen?

: Gruß MATT


Hallo Matt,

es gibt zwei Möglichkeiten:

Wechseln auf MySql Version 4.1, dort wird Subselect unterstützt.
oder
Das SQL-Statement in der MySQL-Form läuft aber auch unter DB2 UDB, da dort die Schlüsselwörter LEFT | RIGHT [OUTER] JOIN supportet werden, probier's aus :-)

Mit Subselect wäre auch folgende verkürzte Form möglich (MySQL 4.1 oder DB2 UDB)

DELETE FROM DOCPILOT.ATTRCOUNTRY d1 WHERE
d1.docid NOT IN (SELECT docid from docpilot.documents);

Zum Test kannst du ja mal das DELETE durch ein

SELECT COUNT(docid)
FROM DOCPILOT.ATTRCOUNTRY d1
WHERE d1.docid NOT IN (SELECT docid from docpilot.documents);

ersetzen.

Hoffe es nützt dir was

Gruss
Jürgen




Antworten:


Schreibe eine Antwort

Name:   
E-Mail:  

Thema:

Kommentar:

Optionale Link URL:   
Link Titel:                  
Optionale Image URL:


[ Antworten ] [ Forum ]