Anmelden

View Full Version : Update Syntax SQL



wuwu
18-07-06, 12:45
Hallo,

mir ist die Update Syntax im SQL bekannt aber für das was ich möchte,
reicht mein wissen leider nicht aus.

Habe 2 Tabellen mit folgenden Feldern
1. Tabelle: LaufendeNr, Datum
2. Tabelle: LaufendeNr, Erledigungen

Jetzt möchte ich das Feld Erledigungen aktualisieren mit Update, aber
nur diese Datensätze, die zwischen einem bestimmten Datum sind (Feld
Datum von Tabelle 1).

Syntax:

update kisdata.bespf020
set kisdata.bespf020.be2erl='X'
from kisdata.bespf020

INNER JOIN kisdata.bespf010
on kisdata.bespf010.be1ben=kisdata.bespf020.be2ben
where kisdata.bespf010.BE1FIR = 1
and kisdata.bespf020.BE2FIR = 1
and kisdata.bespf020.be2erl not like 'X'
and kisdata.bespf020.be2ben = 7103445

Es kommt die Meldung: Schlüsselwort from nicht erwartet!

ahinrichs
18-07-06, 13:26
es fehlt das select vor FROM wenn du das 'X' mit einem Abfrageergebnis ersetzen willst.
update kisdata.bespf020
set kisdata.bespf020.be2erl= (select feld from kisdata.bespf020 ... )

Update mit Select:

http://www.rlpforen.de/showthread.php?t=9056&highlight=update+select

http://www.rlpforen.de/showthread.php?t=7160&highlight=update+select

http://www.rlpforen.de/showthread.php?t=6282&highlight=update+select

Suche mal in den Foren mit "SELECT UPDATE"

Das "zwischen einem bestimmten Datum" versteh ich ehrlich gesagt nicht.
Zwischen impliziert ZWEI Felder/Inhalte.
entweder Fix mit BETWEEN Klausel oder das Between mit einem extra Select abhandeln (was ich allerdings noch nie probiert habe. Ich sehe aber nichts, was dagegen spricht)

Gruß
Andreas

wuwu
18-07-06, 13:47
Hallo Andreas,
danke für deine schnelle Antwort!

1. Tabelle Aufträge - Hauptdatensatz: Auftragsnummer, Datum
2. Tabelle Detail Aufträge - Detaildatensätze: Auftragsnummer, Erledigt Feld

Es gibt zu einem Auftrag, mehrere Detaildatensätze in Tabelle 2.

Jetzt mus ich das Feld Erledigt von Tabelle2 mit dem Wert X aktualisieren, aber nur die die zwischen einem bestimmten Datum liegen und dieses Datums Feld ist in Tabelle1. Kannst Du mir da auf die Sprünge helfen?

Syntax - die nicht funktioniert:
update kisdata.bespf020
set kisdata.bespf020.be2erl = 'X'
select be2erl from kisdata.bespf020
INNER JOIN kisdata.bespf010
on kisdata.bespf020.be2ben = kisdata.bespf010.be1ben
where be1dat between 20030101 and 20041231

Danke & Mfg

wuwu
18-07-06, 15:31
Hallo,

der Syntax der funktioniert, GOTT SEI DANK!!!

update kisdata.bespf020
set kisdata.bespf020.be2erl = 'X'
where kisdata.bespf020.be2ben in(
select be1ben
from kisdata.bespf010
where be1dat between 20030101 and 20041231)
and be2erl not like 'X'

Danke & MFG Horst