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
Seite 2 von 2     12   
Benutzerbild von ibp
ibp

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

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

  Alt 23. Jun 2015, 12:01
Ansatz, baut auf meinem vorigen Beitrag auf...
SQL-Code:
select
t2.spalte2
,(select sum(ts.spalte3)
from tabelle1 ts
where ts.spalte1 < (t1.spalte1)
) as Summe
,t1.spalte3
from tabelle1 t1
left join tabelle2 t2 on (t2.spalte1 = t1.spalte2)
where t1.spalte2 = 'Wert1'
order by t1.spalte1
Ergebnis:
Code:
Spalte2  Summe   Spalte3
1500     <null>  310
1500     310      235
1500     545      310
nur das Ergebnis...
SQL-Code:
select
t2.spalte2 -
   (select sum(ts.spalte3) from tabelle1 ts where ts.spalte1 <= t1.spalte1)
from tabelle1 t1
left join tabelle2 t2 on (t2.spalte1 = t1.spalte2)
where t1.spalte2 = 'Wert1'
order by t1.spalte1
Das Prinzip sollte klar sein, den Rest bekommst du schon hin...

Geändert von ibp (23. Jun 2015 um 12:24 Uhr) Grund: Ergänzugen
  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
 
#12

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

  Alt 23. Jun 2015, 12:35
für die ganze Tabelle... geht es auch mit einem Statement...

SQL-Code:
select
t1.spalte1,
t1.spalte2,
t1.spalte3,
t2.spalte2 -
   (select sum(ts.spalte3) from tabelle1 ts where (ts.spalte1 <= t1.spalte1) and (ts.spalte2=t1.spalte2))
as spalte4
from tabelle1 t1
left join tabelle2 t2 on (t2.spalte1 = t1.spalte2)
order by t1.spalte1
immer in Mengen denken
  Mit Zitat antworten Zitat
Benutzerbild von frankyboy1974
frankyboy1974

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

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

  Alt 23. Jun 2015, 13:24
hallo,

@idb
ich sehe in deiner Abfrage noch nicht einmal, wo irgendwelche Datensätze aktualisiert werden. Der TE wollte wissen, ob er mit einem SQL Statement, die Daten aktualisieren kann. Ohne es ausprobiert zu haben, würde ich sagen, das dein SQL-Statement auch noch nicht einmal die richtigen Werte liefert. Selbst wenn du dass anschliessend in der DB speichers (insert into select from).

Um deine Worte zu benutzen

immer erst überhaupt denken

mfg

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

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

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

  Alt 23. Jun 2015, 14:01
immer erst überhaupt denken
Dieser Tipp ist natürlich unschlagbar!
Gruß, Jo
  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
 
#15

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

  Alt 23. Jun 2015, 16:05
@frankyboy1974

ich gehe davon aus das Rolf Warnecke durchaus in der Lage ist die Transferleistung zu erbringen aus einer Select-Anweisung ein Update-Statement zu erstellen.
SQL-Code:
update tabelle1 ut1
set ut1.spalte4 =
(
select t2.spalte2 - (select sum(ts.spalte3) from tabelle1 ts where (ts.spalte1 <= t1.spalte1) and (ts.spalte2=t1.spalte2))
from tabelle1 t1
left join tabelle2 t2 on (t2.spalte1 = t1.spalte2)
where t1.spalte1 = ut1.spalte1
)
Des weiteren ist es anmaßend aus einem Verdacht heraus generell etwas als falsch darzustellen und dann auch noch beleidigende Aussagen zu treffen.

MfG IbP
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#16

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

  Alt 23. Jun 2015, 17:48
Oder eine View erstellen & damit weiter arbeiten ?
Aus Datenbankler-Sicht ist das der richtige Weg, da es Inkonsistenzen vermiedet.

Siehe auch:
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

Aber du wirst schon nen Grund haben
  Mit Zitat antworten Zitat
jobo

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

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

  Alt 24. Jun 2015, 07:30
Es haben sich wohl genug Hinweise bzw. Ansätze und Lösungen gesammelt, denke der TE kann das schon sinnvoll umsetzen.
Was das beste ist, kann man anhand seiner bisherigen Angaben hier nicht sagen. Ich vote dennoch blindlings für einen View.
Gruß, Jo
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#18

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

  Alt 24. Jun 2015, 08:11
Bei einer derartig gestalteten View ist der Aufwand doch O(n^2), oder genau O(n*m), wobei n die Anzahl der Zeilen und m die mittlere/maximale Länge der zu summierenden Abschnitte ist, also doch letztendlich O(n^2)

Wenn ich die Tabelle einlesen und das per Hand mache, wäre der Aufwand dagegen O(n). Wenn ich die Daten also im Speicher benötige, sollte das dann -zumindest theoretisch- schneller gehen.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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:25 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