Update eines Feldes aus einer anderen Tabelle
Moderator: Moderatoren
- Manfred
- Foren-Administrator
- Beiträge: 21321
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 229 Mal
- Danksagung erhalten: 74 Mal
Update eines Feldes aus einer anderen Tabelle
Tach,
ich habe mal wieder einen Knoten im Hirn. Ich habe eine Tabelle Personal und eine Tabelle Verträge. Nun möchte ich einmalig die Personaltabelle updaten und dort ein Datum eintragen. Dieses Datum soll aus der Vertragstabelle kommen, die mehrere EInträge haben kann je Personalsatz. Es soll immer das höchste DAtum genommen werden aus der Vertragstabelle und in die Personaltabelle übertragen werden, aber nur wenn das Datum in der Personaltabelle kleiner als das Datum aus der Vertragstabelle ist.
Ich habe etliches versucht, komme aber irgendwie nicht ans Ziel.
ich habe mal wieder einen Knoten im Hirn. Ich habe eine Tabelle Personal und eine Tabelle Verträge. Nun möchte ich einmalig die Personaltabelle updaten und dort ein Datum eintragen. Dieses Datum soll aus der Vertragstabelle kommen, die mehrere EInträge haben kann je Personalsatz. Es soll immer das höchste DAtum genommen werden aus der Vertragstabelle und in die Personaltabelle übertragen werden, aber nur wenn das Datum in der Personaltabelle kleiner als das Datum aus der Vertragstabelle ist.
Ich habe etliches versucht, komme aber irgendwie nicht ans Ziel.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Manfred
- Foren-Administrator
- Beiträge: 21321
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 229 Mal
- Danksagung erhalten: 74 Mal
Re: Update eines Feldes aus einer anderen Tabelle
Hi Tom,
hast Du irgendwann einen Clown gefrühstückt, der Dir absolut nicht bekommen ist?
hast Du irgendwann einen Clown gefrühstückt, der Dir absolut nicht bekommen ist?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9481
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 112 Mal
- Danksagung erhalten: 380 Mal
- Kontaktdaten:
Re: Update eines Feldes aus einer anderen Tabelle
Huhu, Manfred.
Wenn man den Clown ordentlich zubereitet, ist er nicht nur ein gutes Frühstück, sondern man kann auch das Mittagessen auslassen.
Spaß beiseite. Ich bin SQL-Rookie, aber auf Deine Fragestellung hätte ich vermutlich auch dann keine hilfreiche Antwort, wenn ich SQL-Pro wäre. Dafür ist das noch deutlich zu abstrakt.
Wenn man den Clown ordentlich zubereitet, ist er nicht nur ein gutes Frühstück, sondern man kann auch das Mittagessen auslassen.
Spaß beiseite. Ich bin SQL-Rookie, aber auf Deine Fragestellung hätte ich vermutlich auch dann keine hilfreiche Antwort, wenn ich SQL-Pro wäre. Dafür ist das noch deutlich zu abstrakt.
Herzlich,
Tom
Tom
- Werner_Bayern
- Der Entwickler von "Deep Thought"
- Beiträge: 2165
- Registriert: Sa, 30. Jan 2010 22:58
- Wohnort: Niederbayern
- Hat sich bedankt: 31 Mal
- Danksagung erhalten: 80 Mal
Re: Update eines Feldes aus einer anderen Tabelle
Abstrakt: max(vertrag.datum) as maxdatum where personal.datum > maxdatum ist dein Select im updatebefehl ... where vertrag.personalid = personal.personalid
es grüßt
Werner
<when the music is over, turn off the lights!>
Werner
<when the music is over, turn off the lights!>
- Marcus Herz
- 1000 working lines a day
- Beiträge: 889
- Registriert: Mo, 16. Jan 2006 8:13
- Wohnort: Allgäu
- Hat sich bedankt: 42 Mal
- Danksagung erhalten: 206 Mal
- Kontaktdaten:
Re: Update eines Feldes aus einer anderen Tabelle
Für ADS i etwa so
Gibt es keinen Vetrag zu einer Person, dann ist vertrag.d NULL folglich auch die WHERE Bedingung false.
Musst halt noch die Feldnamen anpassen
Code: Alles auswählen
update personal set vertragsdatum = vertrag.d
left join (select personalnr, max(vertragdatum) as d from vertrag group by 1) vertrag on vertrag.personalnr = personal.persoanlnr
where vertragsdatum < vertrag.d
Musst halt noch die Feldnamen anpassen
Gruß Marcus
Den Kopf in den Sand zu stecken rettet die Welt auch nicht.
Den Kopf in den Sand zu stecken rettet die Welt auch nicht.
- Manfred
- Foren-Administrator
- Beiträge: 21321
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 229 Mal
- Danksagung erhalten: 74 Mal
Re: Update eines Feldes aus einer anderen Tabelle
das müßte doch jetzt das äquivalent zu Deinem sein Marcus
klappt nicht
Code: Alles auswählen
update fahrer set austritt = vertrag.d
left join (select idfahrer, max(gueltigbis) as d from arbeitsverhaeltnisse2fahrer group by 1) vertrag on vertrag.idfahrer = fahrer.id
where austritt < vertrag.d
poQuery: Error 7200: AQE Error: State = 42000; NativeError = 2117; [SAP][Advantage SQL Engine]Unexpected token: left -- Expecting semicolon. -- Location of error in the SQL statement is: 40 (line: 2 column: 1)
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Marcus Herz
- 1000 working lines a day
- Beiträge: 889
- Registriert: Mo, 16. Jan 2006 8:13
- Wohnort: Allgäu
- Hat sich bedankt: 42 Mal
- Danksagung erhalten: 206 Mal
- Kontaktdaten:
Re: Update eines Feldes aus einer anderen Tabelle
Sorry
Code: Alles auswählen
update fahrer set austritt = vertrag.d
from fahrer
left join (select idfahrer, max(gueltigbis) as d from arbeitsverhaeltnisse2fahrer group by 1) vertrag on vertrag.idfahrer = fahrer.id
where austritt < vertrag.d
Gruß Marcus
Den Kopf in den Sand zu stecken rettet die Welt auch nicht.
Den Kopf in den Sand zu stecken rettet die Welt auch nicht.
- Manfred
- Foren-Administrator
- Beiträge: 21321
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 229 Mal
- Danksagung erhalten: 74 Mal
Re: Update eines Feldes aus einer anderen Tabelle
jetzt steht ich komplett daneben. Bist Du Dir sicher? Jetzt werden 0 Sätze upgedatet.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Manfred
- Foren-Administrator
- Beiträge: 21321
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 229 Mal
- Danksagung erhalten: 74 Mal
Re: Update eines Feldes aus einer anderen Tabelle
aber wenn ich mir das jetzt mal so anschaue, wenn ich die WHERE Klausel weg lasse, dann sieht es eigentlich so aus, wie ich es haben möchte. Kommt sicherlich von max() und group by.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- nightcrawler
- 1000 working lines a day
- Beiträge: 677
- Registriert: Di, 24. Apr 2012 16:33
- Wohnort: 72184 Weitingen
- Hat sich bedankt: 4 Mal
- Danksagung erhalten: 109 Mal
- Kontaktdaten:
Re: Update eines Feldes aus einer anderen Tabelle
Hallo Manfred,
stell doch ein Minimalbeispiel rein, welches die Tabellen erzeugt und ein paar Testdatensätze einfügt. Dann zeige, was als Resultat rauskommen soll.
Damit kann man es evtl rekonstruieren, alles andere ist blind geraten.
stell doch ein Minimalbeispiel rein, welches die Tabellen erzeugt und ein paar Testdatensätze einfügt. Dann zeige, was als Resultat rauskommen soll.
Damit kann man es evtl rekonstruieren, alles andere ist blind geraten.
- Manfred
- Foren-Administrator
- Beiträge: 21321
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 229 Mal
- Danksagung erhalten: 74 Mal
Re: Update eines Feldes aus einer anderen Tabelle
Hi Joachim,
es sieht doch im Moment gut aus. Ich habe Where weggelassen und das Update lief.
es sieht doch im Moment gut aus. Ich habe Where weggelassen und das Update lief.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Marcus Herz
- 1000 working lines a day
- Beiträge: 889
- Registriert: Mo, 16. Jan 2006 8:13
- Wohnort: Allgäu
- Hat sich bedankt: 42 Mal
- Danksagung erhalten: 206 Mal
- Kontaktdaten:
Re: Update eines Feldes aus einer anderen Tabelle
evtl. war in der Fahrer.austritt NULL
Gruß Marcus
Den Kopf in den Sand zu stecken rettet die Welt auch nicht.
Den Kopf in den Sand zu stecken rettet die Welt auch nicht.
- Manfred
- Foren-Administrator
- Beiträge: 21321
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 229 Mal
- Danksagung erhalten: 74 Mal
Re: Update eines Feldes aus einer anderen Tabelle
hm,
da müßte '0000-00-00' drin gewesen sein, das hatte ich eingetragen um zu testen.
da müßte '0000-00-00' drin gewesen sein, das hatte ich eingetragen um zu testen.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Marcus Herz
- 1000 working lines a day
- Beiträge: 889
- Registriert: Mo, 16. Jan 2006 8:13
- Wohnort: Allgäu
- Hat sich bedankt: 42 Mal
- Danksagung erhalten: 206 Mal
- Kontaktdaten:
Re: Update eines Feldes aus einer anderen Tabelle
Ein DATE Feld mit dem Datum ???
Ist das auch gespeichert worden?
Ein leeres/ungültiges Datum ist immer NULL
Ist das auch gespeichert worden?
Ein leeres/ungültiges Datum ist immer NULL
Gruß Marcus
Den Kopf in den Sand zu stecken rettet die Welt auch nicht.
Den Kopf in den Sand zu stecken rettet die Welt auch nicht.
- Marcus Herz
- 1000 working lines a day
- Beiträge: 889
- Registriert: Mo, 16. Jan 2006 8:13
- Wohnort: Allgäu
- Hat sich bedankt: 42 Mal
- Danksagung erhalten: 206 Mal
- Kontaktdaten:
Re: Update eines Feldes aus einer anderen Tabelle
Code: Alles auswählen
update fahrer set austritt = vertrag.d
from fahrer
left join (select idfahrer, max(gueltigbis) as d from arbeitsverhaeltnisse2fahrer group by 1) vertrag on vertrag.idfahrer = fahrer.id
where coalesce(austritt, curdate() - 3650) < vertrag.d
Gruß Marcus
Den Kopf in den Sand zu stecken rettet die Welt auch nicht.
Den Kopf in den Sand zu stecken rettet die Welt auch nicht.
- Manfred
- Foren-Administrator
- Beiträge: 21321
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 229 Mal
- Danksagung erhalten: 74 Mal
Re: Update eines Feldes aus einer anderen Tabelle
ich habe das gewählt, weil '' ja nicht klappt. Was hätte ich stattdessen nehmen müssen?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Marcus Herz
- 1000 working lines a day
- Beiträge: 889
- Registriert: Mo, 16. Jan 2006 8:13
- Wohnort: Allgäu
- Hat sich bedankt: 42 Mal
- Danksagung erhalten: 206 Mal
- Kontaktdaten:
Re: Update eines Feldes aus einer anderen Tabelle
Andere Schreibweise, in Bedingung mit "IS NULL"
Code: Alles auswählen
update fahrer set austritt = vertrag.d
from fahrer
left join (select idfahrer, max(gueltigbis) as d from arbeitsverhaeltnisse2fahrer group by 1) vertrag on vertrag.idfahrer = fahrer.id
where iif( austritt IS NULL, true, austritt < vertrag.d)
Gruß Marcus
Den Kopf in den Sand zu stecken rettet die Welt auch nicht.
Den Kopf in den Sand zu stecken rettet die Welt auch nicht.