DELETE FROM mit verknüpften Tabellen
Verfasst: So, 19.10.2008 13:16
Hallo zusammen,
um eine relativ große Tabelle auzumisten möchte ich eine SQL-Abrage (HSQLDB) unter Extras / SQL absetzen.
Die zu reduzierende Tabelle RMABestand enthält die Felder ArtikelNr, Menge, und Eingangsdatum. In der Tabelle Artikelstamm ist zu jedem Artikel die Kreditorennr hinterlegt.
Nun möchte ich für einen bestimmten Kreditor in RMABestand alle Einträge löschen deren Eingangsdatum älter als ein bestimmter Wert ist und das Feld Menge leer ist.
Eine mit dem Assistenten erstellte Abfrage ergibt folgenden SQL-Code und zeigt richtig die Einträge die auf der "Abschussliste" stehen:
Wenn ich jetzt den SELECT-Teil durch DELET FROM ersetze, bekomme ich die Fehlermeldung "Column not found: Artikelstamm.Nr":
Aus den Weiten des Netztes hat mir Google folgenden Tipp gebracht:
Allerdings bekomme ich, nach dem der Rechner einige Zeit gearbeitet hat die Fehlermeldung "Not a condition"
Nach zwei Tagen googeln und probieren gehen mir die Ideeen aus, hab jemand noch einen Tipp?
Viele Grüße,
Andreas
um eine relativ große Tabelle auzumisten möchte ich eine SQL-Abrage (HSQLDB) unter Extras / SQL absetzen.
Die zu reduzierende Tabelle RMABestand enthält die Felder ArtikelNr, Menge, und Eingangsdatum. In der Tabelle Artikelstamm ist zu jedem Artikel die Kreditorennr hinterlegt.
Nun möchte ich für einen bestimmten Kreditor in RMABestand alle Einträge löschen deren Eingangsdatum älter als ein bestimmter Wert ist und das Feld Menge leer ist.
Eine mit dem Assistenten erstellte Abfrage ergibt folgenden SQL-Code und zeigt richtig die Einträge die auf der "Abschussliste" stehen:
Code: Alles auswählen
SELECT "RMABestand"."ArtikelNr", "RMABestand"."Menge", "RMABestand"."Eingangsdatum", "Artikelstamm"."Kreditorennr" FROM "Artikelstamm" AS "Artikelstamm", "RMABestand" AS "RMABestand" WHERE "Artikelstamm"."Nr" = "RMABestand"."ArtikelNr" AND "RMABestand"."Menge" IS NULL AND "RMABestand"."Eingangsdatum" < {D '2008-03-11' } AND "Artikelstamm"."Kreditorennr" = '700030'
Code: Alles auswählen
DELETE FROM "RMABestand" WHERE "Artikelstamm"."Nr" = "RMABestand"."ArtikelNr" AND "RMABestand"."Menge" IS NULL AND "RMABestand"."Eingangsdatum" < {D '2008-03-11' } AND "Artikelstamm"."Kreditorennr" = '700030'
Code: Alles auswählen
DELETE FROM "RMABestand" WHERE (SELECT "RMABestand"."ArtikelNr", "RMABestand"."Menge", "RMABestand"."Eingangsdatum", "Artikelstamm"."Kreditorennr" FROM "Artikelstamm" AS "Artikelstamm", "RMABestand" AS "RMABestand" WHERE "Artikelstamm"."Nr" = "RMABestand"."ArtikelNr" AND "RMABestand"."Menge" IS NULL AND "RMABestand"."Eingangsdatum" < {D '2008-03-11' } AND "Artikelstamm"."Kreditorennr" = '700030')
Nach zwei Tagen googeln und probieren gehen mir die Ideeen aus, hab jemand noch einen Tipp?
Viele Grüße,
Andreas