Announcement

Collapse
No announcement yet.

delete Anweiseung funktioniert nicht

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • delete Anweiseung funktioniert nicht

    Hallo,

    habe folgende delete Anweisung:

    Code:
    delete from Tabelle1 where exists (select wert1, wert2 from Tabelle2 where exists (select * from Tabelle3 where Tabelle2.wert1 = Tabelle3.wert1 and Tabelle3.wert2 = 0) and Tabelle1.wert2 = Tabelle2.wert2)
    Es löscht mir Daten aus der Tabelle die nicht den Status = 0 haben.

    Ist es überhaubt möglich so die Anwiesung aufzubauen?

    Danke mal für eure Antworten.
    Zuletzt editiert von split; 30.05.2008, 10:43.

  • #2
    Hallo,

    die IN-Anweisung in der WHERE-Einschränkung führt zum gewünschten Ziel und ist zudem übersichtlicher, da die einzelnen Bestandteile separat getestet werden können:
    [highlight=SQL]
    USE tempdb
    GO

    CREATE TABLE dbo.Tbl1
    (
    id1 INT NOT NULL IDENTITY PRIMARY KEY,
    wert INT NOT NULL DEFAULT 1
    )
    GO
    INSERT INTO dbo.Tbl1 DEFAULT VALUES
    INSERT INTO dbo.Tbl1 DEFAULT VALUES
    INSERT INTO dbo.Tbl1 DEFAULT VALUES
    INSERT INTO dbo.Tbl1 DEFAULT VALUES
    GO

    CREATE TABLE dbo.Tbl2
    (
    id2 INT NOT NULL IDENTITY PRIMARY KEY,
    id1 INT NOT NULL,
    status INT NOT NULL
    )
    GO
    INSERT INTO dbo.Tbl2 (id1,status) VALUES (1,0)
    INSERT INTO dbo.Tbl2 (id1,status) VALUES (2,1)
    INSERT INTO dbo.Tbl2 (id1,status) VALUES (3,0)
    INSERT INTO dbo.Tbl2 (id1,status) VALUES (4,1)
    GO

    DELETE FROM dbo.Tbl1
    WHERE id1 IN (SELECT a.id1
    FROM dbo.Tbl1 a
    JOIN dbo.Tbl2 b ON a.id1 = b.id1
    WHERE b.status = 1)
    GO

    -- Ergebniskontrolle
    SELECT * FROM dbo.Tbl1
    [/highlight]

    Comment

    Working...
    X