AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken sql insert problem, datensatzübergreifend
Thema durchsuchen
Ansicht
Themen-Optionen

sql insert problem, datensatzübergreifend

Ein Thema von Serienchiller · begonnen am 30. Apr 2012 · letzter Beitrag vom 30. Apr 2012
Antwort Antwort
Seite 1 von 2  1 2      
Serienchiller

Registriert seit: 15. Jun 2011
Ort: Wurzen
40 Beiträge
 
Delphi 7 Professional
 
#1

sql insert problem, datensatzübergreifend

  Alt 30. Apr 2012, 14:33
Datenbank: firebird • Version: 2.1 • Zugriff über: ib expert
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...

Geändert von Serienchiller (30. Apr 2012 um 14:36 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#2

AW: sql insert problem, datensatzübergreifend

  Alt 30. Apr 2012, 14:41
D.h. beide Tabellen enthalten einen Fremdschlüssel auf die jeweils andere Tabelle? Wozu soll das denn gut sein?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: sql insert problem, datensatzübergreifend

  Alt 30. Apr 2012, 14:41
Grunsätzlich geht das einfacher durch insert into ... select Das Problem mit der Gutschrift bleibt aber.
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.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#4

AW: sql insert problem, datensatzübergreifend

  Alt 30. Apr 2012, 14:42
Wenn man eine SP verwendet, könnte man sich die "alten" bzw. "neuen" IDs ja auch merken (INSERT INTO ... RETURNING...) und ggf. ersetzen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Serienchiller

Registriert seit: 15. Jun 2011
Ort: Wurzen
40 Beiträge
 
Delphi 7 Professional
 
#5

AW: sql insert problem, datensatzübergreifend

  Alt 30. Apr 2012, 14:45
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...
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#6

AW: sql insert problem, datensatzübergreifend

  Alt 30. Apr 2012, 14:50
das mit dem ds merken ist deswegen problematisch, weil es sein kann, dass die zusammengehörenden ds in der tabelle ganz weit auseinanderliegen...
Verstehe ich nicht. Angenommen, Du hast einen DS mit der ID 10 und einem FK auf ID 42. Dann machst Du ein INSERT INTO mit RETURNING, merkst Dir die zurückgegebene ID, kopierst den referenzierten DS, merkst Dir auch dessen ID und machst dann ein Update der ersten Tabelle, indem Du den FK auf den gerade gemerkten setzt. Dabei ist es doch wurscht, wie weit die auseinander liegen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Serienchiller

Registriert seit: 15. Jun 2011
Ort: Wurzen
40 Beiträge
 
Delphi 7 Professional
 
#7

AW: sql insert problem, datensatzübergreifend

  Alt 30. Apr 2012, 14:56
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.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#8

AW: sql insert problem, datensatzübergreifend

  Alt 30. Apr 2012, 14:58
Und wie sind die DS dann miteinander verknüpft?

BTW: Klemmt Deine Shift-Taste?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Serienchiller

Registriert seit: 15. Jun 2011
Ort: Wurzen
40 Beiträge
 
Delphi 7 Professional
 
#9

AW: sql insert problem, datensatzübergreifend

  Alt 30. Apr 2012, 15:02
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.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#10

AW: sql insert problem, datensatzübergreifend

  Alt 30. Apr 2012, 15:14
Also doch ein Fremdschlüssel, wenn auch auf dieselbe Tabelle.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:50 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz