AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Tabelle um Spalte erweitern und mit berechneten Werten füllen
Thema durchsuchen
Ansicht
Themen-Optionen

Tabelle um Spalte erweitern und mit berechneten Werten füllen

Ein Thema von RWarnecke · begonnen am 22. Jun 2015 · letzter Beitrag vom 24. Jun 2015
Antwort Antwort
mkinzler
(Moderator)

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

AW: Tabelle um Spalte erweitern und mit berechneten Werten füllen

  Alt 22. Jun 2015, 13:07
Sollte durch Update gehen

SQL-Code:
update tabelle1 t1
  set spalte4 = (select spalte2 from tabelle2 t2 where t2.spalte1 = t1.spalte) - t1.spalte3;
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#2

AW: Tabelle um Spalte erweitern und mit berechneten Werten füllen

  Alt 22. Jun 2015, 13:39
Hallo Markus,

ich habe Dein Update-Befehl ausprobiert. Leider bringt er nicht das gewünschte Ergebnis. Der Wert aus Tabelle 2 (Beispiel: 1500) soll nur bei der ersten Subtrahierung genommen werden. Beim zweiten Mal soll der Wert genommen werden, der durch das Update in Spalte 4 der ersten Tabelle eingefügt wurde.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Benutzerbild von Olli73
Olli73
Online

Registriert seit: 25. Apr 2008
Ort: Neunkirchen
789 Beiträge
 
#3

AW: Tabelle um Spalte erweitern und mit berechneten Werten füllen

  Alt 22. Jun 2015, 13:54
ich habe Dein Update-Befehl ausprobiert. Leider bringt er nicht das gewünschte Ergebnis. Der Wert aus Tabelle 2 (Beispiel: 1500) soll nur bei der ersten Subtrahierung genommen werden. Beim zweiten Mal soll der Wert genommen werden, der durch das Update in Spalte 4 der ersten Tabelle eingefügt wurde.
Ungetestet (also "so ungefähr"):

Code:
update tabelle1 t1
   set t1.spalte4 = (select t2.spalte2 from tabelle2 t2 where t2.spalte1 = t1.spalte2) - (select sum(t3.spalte3) from tabelle1 t3 where t3.spalte2 = t1.spalte2 and t3.spalte1 <= t1.spalte1);
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#4

AW: Tabelle um Spalte erweitern und mit berechneten Werten füllen

  Alt 23. Jun 2015, 06:18
Also ich glaube nicht, dass das so ohne weiteres geht (mit sqLite)
1. Die Anforderung benötigt im Prinzip Window Functions, was sqLite nicht besitzt (gibt glaub ich ein Mod, das etwas davon umsetzt)
2. Man bräuchte zum Verzicht auf die Window Fuctions noch genauere Angaben zu den Werten (Sortierung, Anzahl) Also ist das was man sieht, aufsteigend, lückenlos usw. garantiert oder "Zufall"
3. Ich frage mich nach dem Sinn. Du baust im Grunde gezielt eine funktionale Beziehung zwischen Daten ein. Das ist Denormalisierung, das will man nicht. Außer aus Performancegründen vielleicht, dann muss man es aber absichern oder regulieren, dass die Werte beliebig neu berechnet werden können oder oder
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von frankyboy1974
frankyboy1974

Registriert seit: 7. Apr 2015
Ort: SH
169 Beiträge
 
Delphi XE7 Professional
 
#5

AW: Tabelle um Spalte erweitern und mit berechneten Werten füllen

  Alt 23. Jun 2015, 08:15
Hallo,

ich mag mich täuschen, aber ich würde sagen, dies ist mit einem einzigen deskriptiven SQL-Statement nicht möglich. Dass man das Ergebnis der einen Zeile, als Zwischenergebnis speichert und mit diesem Ergebnis dann in der nächsten Ergebniszeile weiterrechnet, ist meines Wissens nicht SQL-konform. Meine letzte SQL-Schulung ist zwar schon ein paar Jahre (Jahrzehnte) her, aber ich würde sagen nein. Mit Datenbankprogrammierung bzw. Delphiprogrammierung sollte das Problem aber einfach zu lösen sein. Falls ich mich geirrt habe, würde ich mich freuen, wenn mich jemand korrigiert (Man lernt nie aus).

mfg

Frank
Java ist auch eine Insel.
Ist Delphi von Oracle?
In meiner Buchstabensuppen fehlt das C++!
  Mit Zitat antworten Zitat
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#6

AW: Tabelle um Spalte erweitern und mit berechneten Werten füllen

  Alt 23. Jun 2015, 10:05
kann SQLLite StoredProcedure? Dann mach das damit.

oder ein Denkanstoß...
Zitat:
Zeile 1 --> 1500 - 310 = 1190
Zeile 2 --> 1190 - 235 = 955
Zeile 3 --> 955 - 310 = 645

ist das gleiche wie...., damit brauchst du keinen Zwischenspeicher für das Ergebnis der vorausgegangenen Zeile...

Code:
Zeile 1 --> 1500              -  310 = 1190
Zeile 2 --> 1500 - 310        -  235 = 955
Zeile 3 --> 1500 - 310 - 235  -  310 = 645
  Mit Zitat antworten Zitat
Benutzerbild von user0815
user0815

Registriert seit: 5. Okt 2007
331 Beiträge
 
Delphi XE2 Professional
 
#7

AW: Tabelle um Spalte erweitern und mit berechneten Werten füllen

  Alt 23. Jun 2015, 10:24
Oder eine View erstellen & damit weiter arbeiten ?

SQL-Code:
SELECT t1.Spalte1, t1.Spalte2, t1.Spalte3, t2.Spalte2 AS Wert, (t2.Spalte2 - t1.Spalte3) AS Rest
FROM Tabelle1 t1
LEFT JOIN Tabelle2 t2 ON t1.Spalte2 = t2.Spalte1
  Mit Zitat antworten Zitat
Antwort Antwort


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 23:10 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-2025 by Thomas Breitkreuz