![]() |
Datenbank: firebird • Version: 2.1 • Zugriff über: ib expert
sql insert problem, datensatzübergreifend
hallo liebe community!
ich habe gerade ein riesen problem, an dem ich seit ein paar stunden hänge :( ich hoffe ihr könnt mir helfen... also ich muss aus der datenbank alle rechnungen des vorjahres kopieren und als neue datensätze wieder mit erhöhtem datum in die db einsetzen, samt allen verlinkten tabellen. soweit klappt das schon ganz gut, jetzt bin ich aber auf ein prob gestoßen: wenn eine rechnung mit einer gutschrift verknüpft ist, hat sie den pk id, und ein weiteres feld mit der id der verknüpften gutschrift. bei der gutschrift ist es genau umgekehrt. so hängt eine gutschrift immer mit einer rechnung zusammen. mit einer for select anweisung gehe ich nun ds für ds durch und dupliziere jeden ds und lasse dabei per generator eine neue id generieren. nur wie schaffe ich es jetzt, wenn ich einen ds erstelle, das feld gutschriftid zu füllen? diese wird ja erst später erstellt... und wenn später die gutschrift erstellt wird, weiß ich nicht mehr, wie ich den ds vorher finden soll, der mit der jeweiligen gutschrift verknüpft ist... ich hoffe das war einigermaßen verständlich :) würde mich sehr über hilfe freuen... |
AW: sql insert problem, datensatzübergreifend
D.h. beide Tabellen enthalten einen Fremdschlüssel auf die jeweils andere Tabelle? Wozu soll das denn gut sein?
|
AW: sql insert problem, datensatzübergreifend
Grunsätzlich geht das einfacher durch
SQL-Code:
Das Problem mit der Gutschrift bleibt aber.
insert into ... select
Ich würde diese Verknüpfung später setzen. Ich frage mich aber, ob es sinnvoll ist, die Rechnungen des Vorjahres so vorzutragen. Zudem erscheint mir es fraglich, ob die Gutschriften im Folgejahr genauso zutreffen. |
AW: sql insert problem, datensatzübergreifend
Wenn man eine SP verwendet, könnte man sich die "alten" bzw. "neuen" IDs ja auch merken (INSERT INTO ... RETURNING...) und ggf. ersetzen.
|
AW: sql insert problem, datensatzübergreifend
es handelt sich nur um demodaten, die automatisch ins nächste jahr übertragen werden sollen, deswegen ist die gültigkeit egal.
es geht nur um die eine tabelle, in der der pk die id ist und ein weiteres feld heißt "rechgutid", wo halt die id des jeweils verknüpften ds drin steht. das mit dem ds merken ist deswegen problematisch, weil es sein kann, dass die zusammengehörenden ds in der tabelle ganz weit auseinanderliegen... |
AW: sql insert problem, datensatzübergreifend
Zitat:
|
AW: sql insert problem, datensatzübergreifend
das problem is ja, dass gutschriften und rechnungen in EINER tabelle liegen und es folglich keinen foreign key gibt...
die unterscheidung ist lediglich durch das boolean feld "gutschrift" 0 oder 1 gegeben. |
AW: sql insert problem, datensatzübergreifend
Und wie sind die DS dann miteinander verknüpft?
BTW: Klemmt Deine Shift-Taste? |
AW: sql insert problem, datensatzübergreifend
in der db garnicht. erst durch das programm kommt die verknüpfung. und das programm merkt, welche ds zusammen gehören, indem es schaut wo die id in dem einen, und "rechgutid" in dem anderen ds den selben wert haben.
|
AW: sql insert problem, datensatzübergreifend
Also doch ein Fremdschlüssel, wenn auch auf dieselbe Tabelle.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:47 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz