Hi Leute!
Ich hab jetzt ein SQL-Problem, von dem ich noch nicht weiß, wie man das macht.
Ich hab einerseits eine Tabelle mit Importieren Inhalten. Jeder Datensatz hat eine eindeutige ID und einen Timestamp. Außerdem gibt es noch eine Boolean-Spalte, wo ich kennzeichne, ob ich diesen Datensatz übernehmen möchte, oder nicht. (Das geschieht manuell nach dem Import)
Und dann gibt es eine Tabelle (Stammtabelle) wo ich diese Importe integrieren möchte. Diese Tabelle hat wiederum eine eindeutige ID-Spalte, eine Spalte, worin die ID der Import-Tabelle vorkommt, und ebenso eine Timestamp-Spalte.
Wenn der Timestamp des Imports jünger ist, als jener der Stammtabelle, dann soll die Stammtabelle geupdatet werden. Sonst nicht. Gibt es in der Stammtabelle keinen Datensatz, welcher die ID des Imports enthält, soll der Importdatensatz hinzugefügt werden.
Ich hoffe, ich hab das halbwegs verständlich formuliert.
Leider weiß ich nicht, wie ich ein Statement formulieren muss, welches diese Kriterien erfüllt.
Wie macht man sowas richtig? Geht das überhaupt mit reinem SQL, oder muss ich dazu ein Skript schreiben?
lg scientific
❤️ Helfen Sie noch heute, unser LibreOffice Forum zu erhalten! ❤️
Unterstützen Sie das LibreOffice-Forum und helfen Sie uns, unser Ziel für 2025 zu erreichen!
🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱
>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗
Updaten einer Tabelle mit dem Inhalt einer anderen Tabelle
-
- Beiträge: 131
- Registriert: Do 25. Apr 2013, 17:27
Re: Updaten einer Tabelle mit dem Inhalt einer anderen Tabelle
2 Statements:
Code: Alles auswählen
1.
Insert into Stammtabelle
(Feld1, Feld2 ...)
values
(Select Feld1, Feld2 ... from Importtabelle
where NOT exists
(Select * from Stammtabelle where Stammtabelle.ID=Importtabelle.ID)
)
2.
Update Stammtabelle s, Importtabelle i set s.Feld1=i.Feld1 where s.Timestamp<i.Timestamp
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu
-
- Beiträge: 131
- Registriert: Do 25. Apr 2013, 17:27
Re: Updaten einer Tabelle mit dem Inhalt einer anderen Tabelle
Vielen Dank!
So ähnlich hab ichs mir gedacht... aber
Ach ja, hier im Einsatz eine hsqldb 2.3.3
lg scientific
So ähnlich hab ichs mir gedacht... aber
Gibt die Fehlermeldunggogo hat geschrieben: 2.Code: Alles auswählen
Update Stammtabelle s, Importtabelle i set s.Feld1=i.Feld1 where s.Timestamp<i.Timestamp
Code: Alles auswählen
"Unexpected Token: , required: SET
lg scientific
Re: Updaten einer Tabelle mit dem Inhalt einer anderen Tabelle
Hallo scientific,
beim Update kann nur eine Tabelle mit einem Updatebefehl versehen werden. In dem Code stehen so aber zwei Tabellen als Zieltabellen des Updates. Versuche das Ganze einmal in der folgenden Art:
"Name" und "Zeitstempel" sind hier gedachte Felder der zu importierenden Tabelle.
Gruß
Robert
beim Update kann nur eine Tabelle mit einem Updatebefehl versehen werden. In dem Code stehen so aber zwei Tabellen als Zieltabellen des Updates. Versuche das Ganze einmal in der folgenden Art:
Code: Alles auswählen
Update "Stammtabelle" AS "s" SET "Name" = IFNULL((SELECT "Name" FROM "Importtabelle" WHERE "ID" = "s"."ID" AND "Zeitstempel" > "s"."Zeitstempel"),"Name"), "Zeitstempel" = IFNULL((SELECT "Zeitstempel" FROM "Importtabelle" WHERE "ID" = "s"."ID" AND "Zeitstempel" > "s"."Zeitstempel"),"Zeitstempel")
Gruß
Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:
Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.