SQL UPDATE Anweisung, genaue Syntax

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: SQL UPDATE Anweisung, genaue Syntax

Re: SQL UPDATE Anweisung, genaue Syntax

von RobertG » Fr, 20.01.2017 08:27

Hallo Bernd,

Du kannst Dich bei einem Update oder Insert nur auf eine Tabelle beziehen, in der etwas erledigt wird. Deshalb ist eine Unterabfrage notwendig, die aber nur genau einen Datensatz liefern darf. Der Datensatz muss zu der aktuellen Zeile Deiner Ausgangstabelle TabA passen. Die aktuelle Zeile ist über den Alias erreichbar. Nur der Alias liefert lediglich die aktuellen Werte. TabA.Vorname würde alle Vornamen liefern.
Um die leeren Datumsangaben nicht einzufügen geht vielleicht das Folgende:

Code: Alles auswählen

update "TabA" AS "a" set "Geburtsdatum" = IFNULL((SELECT "Geburtsdatum" FROM "TabB" where "Vorname" = "a"."Vorname" and "Nachname" = "a"."Nachname"),"Geburtsdatum")
Gruß

Robert

Re: SQL UPDATE Anweisung, genaue Syntax

von NTClient » Do, 19.01.2017 22:35

Danke, Robert!
Der SQL-Befehl funktioniert. Allerdings werden in TabA die Geburtsdaten der Mitglieder, die nicht in TabB vorhanden sind, mit LEER überschrieben (gelöscht). Irgendwie muss ich das JOIN IN (WHERE IN?) da noch einbauen.

Warum ist das mit dem Alias erforderlich?
Gruß Bernd!

Re: SQL UPDATE Anweisung, genaue Syntax

von RobertG » Do, 19.01.2017 17:27

Hallo Bernd,

vermutlich so etwas wie der folgende Code:

Code: Alles auswählen

update "TabA" AS "a" set "Geburtsdatum" = (SELECT "Geburtsdatum" FROM "TabB" where "Vorname" = "a"."Vorname" and "Nachname" = "a"."Nachname")
Du suchst das passende Geburtsdatum über eine korrelierende Unterabfrage heraus. Der Tabelle, in die das rein kopiert werden soll, muss dann mit einem Alias versehen sein.

Gruß

Robert

Re: SQL UPDATE Anweisung, genaue Syntax

von NTClient » Do, 19.01.2017 17:02

Ich würde das Thema Update-Syntax gerne noch mal aufgreifen. Weniger, weil ich eine Antwort zur Frage habe, sondern weil die Überschrift zu meinem Problem passt.

Es gibt zwei Tabellen:

Tabelle "TabA" enthält die Spalten "Vornamen", "Nachnamen" und "Geburtsdatum". Das Geburtsdatum einiger Mitglieder ist falsch.

Die Tabelle "TabB" enthält ebenfalls die die Spalten "Vornamen", "Nachnamen" und "Geburtsdatum". Hier ist das Geburtsdatum richtig.

Es soll nun in TabA das Geburtsdatum geupdatet werden mit dem Geburtsdatum aus TabB und zwar dort, wo in beiden Tabellen Vor- und nachname gleich sind. Meine Idee war, in OpenOffice-Base unter Menüpunkt EXTRAS-SQL folgenden Befehl einzugeben:

update "TabA" set "Geburtsdatum" = "TabB"."Geburtsdatum" where "TabA"."Vorname" = "TabB"."Vorname" and "TabA"."Nachname" = "TabB"."Nachname" in select ("TabA"."Vorname", "TabA"."Nachname", "TabA"."Geburtsdatum","TabB"."Vorname", "TabB"."Nachname", "TabB"."Geburtsdatum" from "TabA", "TabB")

Es kommt die Fehlermeldung: Column not found: TabB.Vorname
Ich habe den Befehl mehrfach umgestellt aber ich find' keine Lösung.

Mein Problem ist, dass ich den Syntax bei einer Join-Verknüpfung nicht verstanden habe.

Weiß das einer?
Gruß Bernd!

Re: SQL UPDATE Anweisung, genaue Syntax

von F3K Total » Di, 31.05.2016 21:06

Hallo Herbert,
versuche mal das Datum im Format 'yyyy-mm-dd' zu übergeben und laß die einfachen Anführungszeichen um die String-Variablen weg.
Gruß R

SQL UPDATE Anweisung, genaue Syntax

von herhag » Di, 31.05.2016 19:01

Hallo in´s Forum,

habe schon wieder mal ´ne Frage.
Wie, genau, lautet die Syntax für folgende UPDATE-Anweisung in Base (LibreOffice)?

Code: Alles auswählen

stSql = "UPDATE ""Person"" SET ""Vorname"" = '$Vorname',""Nachname"" = '$Nachname' ,""GebDat"" = '$GebDat, ""Hausnummer"" = '$Hausnummer, ""strID"" = '$strID', ""plzID"" = '$plzID', ""Telefon"" = '$Telefon', ""Geschlecht"" = '$Geschlecht' WHERE ""ID"" = '$ID'"
REM
oSQL_Anweisung.executeUpdate(stSql)
Obiger Code schmeißt mir die untere Fehlermneldung raus:

Code: Alles auswählen

BASIC-Laufzeitfehler.
Es ist eine Ausnahme aufgetreten 
Type: com.sun.star.sdbc.SQLException
Message: Wrong data type: java.lang.IllegalArgumentException.
Meine Vermutung, ich verwende für das Datumsfeld (GebDat) ein falsche Anweisung.
Alle anderen Felder sind Textfelder (VARCHAR) außer Primärkey (ID = Integer, Autowert)

Ich habe nur etwas Erfahrung mit ASP.NET (Windows). Da ist die UPDATE-Anweisung komplett anders.
Bei BASE bin ich Novize!! :( :(

Danke für die potentielle Hilfe.

Noch ´ne Frage.
Hat jemand eine gute Literatur-Empfehlung mit anschaulichen Beispielen?
Ja, ich weiß, dass Internet ist voll davon, aber, Euere Empfehlungen wären mir sympathischer. :) :)

Danke.
Herbert

Nach oben