Problem mit UPDATE und WHERE Kondition

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.

BBCode ist eingeschaltet
[img] ist ausgeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Problem mit UPDATE und WHERE Kondition

Re: Problem mit UPDATE und WHERE Kondition

von RobertG » Mo, 29.07.2019 16:32

Hallo Pascal,

den Beitrag kannst Du als "gelöst" markieren, indem Du die Überschrift Deines Ursprungsbeitrages entsprechend änderst (z.B. [gelöst] hinzufügst.

Dass das Update mit der korrelierenden Unterabfrage nicht funktioniert liegt daran, dass die Unterabfrage auch leer sein kann - und dann ist der Code fehlerhaft:
"a"."ID_Mitglied" = NULL
ist nicht korrekt. NULL wird nur zusammen mit IS oder IS NOT gebraucht, nicht mit dem Gleichheitszeichen.

Gruß

Robert

Re: Problem mit UPDATE und WHERE Kondition

von ISoPaB » Mo, 29.07.2019 16:19

Hallo und vielen Dank für eure Antworten.
Leider hat
RobertG hat geschrieben:
Sa, 27.07.2019 21:48

Code: Alles auswählen

UPDATE "Mitglied" AS "a"
SET "a"."Dat" = '2019-06-30'
WHERE "a"."ID_Mitglied" = (SELECT "ID" FROM "Tabelle" WHERE "a"."ID_Mitglied" = "ID")
nicht funktioniert, es wurden noch immer 0 Zeilen aktualisiert.

Die zweite Methode ging dagegen super.
RobertG hat geschrieben:
Sa, 27.07.2019 21:48

Code: Alles auswählen

UPDATE "Mitglied"
SET "Dat" = '2019-06-30'
WHERE "ID_Mitglied" IN (SELECT "ID" FROM "Tabelle")
Danke nochmal, Pascal

p.s.: Ich finde keine Option, den Beitrag als "gelöst" zu markieren.

Re: Problem mit UPDATE und WHERE Kondition

von RobertG » Sa, 27.07.2019 21:48

Hallo *,

Code: Alles auswählen

UPDATE "Mitglied" AS "a"
SET "a"."Dat" = '2019-06-30'
WHERE "a"."ID_Mitglied" = (SELECT "ID" FROM "Tabelle" WHERE "a"."ID_Mitglied" = "ID")
Das muss mit einer korrelierenden Unterabfrage laufen. Nur dann weiß die in Klammern stehende Abfrage, was in der äußeren Bedingung als Wert für "ID-Mitglied steht. Nur wenn beides gleich ist ergibt die Unterabfrage einen Wert und das Datum wird gesetzt. Ansonsten weiß die Unterabfrage von der Tabelle "Mitglied" überhaupt nichts.

Einfacher ist natürlich

Code: Alles auswählen

UPDATE "Mitglied"
SET "Dat" = '2019-06-30'
WHERE "ID_Mitglied" IN (SELECT "ID" FROM "Tabelle")
Die Unterabfrage enthält keine Verbindung zur Hauptabfrage. Deswegen hat da auch die äußere Tabelle nichts zu suchen.

Gruß

Robert

Re: Problem mit UPDATE und WHERE Kondition

von nikki » Sa, 27.07.2019 13:53

Hallo Pascal,

probiere es mal wie folgt:

Code: Alles auswählen

UPDATE "Mitglied"
SET "Dat" = '2019-06-30'
WHERE "ID_Mitglied" IN (SELECT "ID" FROM "Tabelle" WHERE "Mitglied"."ID_Mitglied" = "Tabelle"."ID")

Problem mit UPDATE und WHERE Kondition

von ISoPaB » Sa, 27.07.2019 11:39

Hallo Forum,

leider kann Base (6.0.7.3) 0 Zeilen aktualisieren, wenn ich folgende SQL-Anweisung direkt ausführe:

Code: Alles auswählen

UPDATE "Mitglied"
SET "Dat" = '2019-06-30'
WHERE "ID_Mitglied" = (SELECT "ID" FROM "Tabelle" WHERE "Mitglied"."ID_Mitglied" = "Tabelle"."ID")
Zum Kontext: Die Tabelle "Mitglied" enthält Mitgliedsinformationen, "Dat" ist ein Datumsfeld der Mitgliedertabelle. Tabelle wiederum enthält 1 Feld "ID", in dem ausgewählte IDs der Tabelle "Mitglieder" enthalten sind. Das Datumsfeld "Dat" in der Mitgliedertabelle soll für die Einträge aus "Tabelle" mit '2019-06-30' gefüllt werden. Aber leider 0 rows updated.

Was mache ich falsch?

Danke, Pascal

Nach oben