WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   SQL Zeilendifferenzen (http://www.wcm.at/forum/showthread.php?t=220043)

kingchaos01 24.07.2007 09:34

Zitat:

Original geschrieben von void


lese 1.zeile, merk dir den wert des gewünschten feldes, lese nächste zeile und wende dein diff auf das vorher gemerkte feld und das gewünschte feld dieser zeile an und speichere das ergebnis als neues feld...

das ganze ist auch unter dem namen "schleife" bekannt.... und jetzt springen wir mal zusammnen ganz nach oben zum ursprungspost.
und wieder
und wieder
und wieder
und wieder
und wieder!

void 24.07.2007 09:36

sry, dann kann dir (von mir) nicht geholfen werden...

(oder will nicht - solltest einmal vielleicht über deinen umgang nachdenken... :rolleyes: )

kingchaos01 24.07.2007 10:15

Jetzt tut's mir aber auch leid!
Ich versteh nicht, was du mit "Umgang" meinst.
Ich stelle eine - mMn präzise - formulierte Frage. Warum? Weil ich eben kein SQL-Könner bin.
Der erste gute Rat, der mich ereilt, zeigt mir, dass die Frage nicht gelesen wurde.

Darauf weise ich - zugegeben - pointiert hin, und ich glaube auch nicht, dass Pong das als Beleidigung aufgefasst hat.

Dein Beitrag beschränkt sich auf
"klar geht das, aber kompliziert... aber vielleicht weiß ja jemand einen einfachen weg".
Danke, sehr hilfreich.

Nebenbei ein Kommentar vom Lord of Midnight, bei dem ich den Eindruck habe, da hat jemand nachgedacht und nicht nur seinen Postingzähler erhöht.

Dann dein zweiter Kommentar, man könne das Zeile für Zeile lesend und subtrahierend lösen.
Jetzt mein Einwand, dass das eine Schleife ist und ich schon die Vermutung geäußert habe, dass das vielleicht eh nur in einer Schleife geht, aber man lernt halt was SQL betrifft immer wieder gerne was dazu.

Irgendwie kann ich nicht erkennen, wie du mir versucht hast zu helfen.

Und nun bist du beleidigt und beschwerst dich über den Umgang.

Tja, leider war ich impulsiv genug, auf deine Postings zu antworten.

Mir hätte es ja schon gereicht, wenn jemand gesagt hätte "vergiss das in SQL, schreib dir eine Schleife in der Skriptsprache deiner Wahl und iteriere durch das Recordset".

Sollte also ein SQL-Könner den Thread mitgelesen haben und dieser Auffassung sein, bitte kurz Bescheid geben.

so long
Roland

opa12 24.07.2007 12:01

Da http://entwickler-forum.de/showthread.php?t=11366 findest ein Beispiel wie eine kumulative Summe berechnet werden kann.
Wenn du von der dann noch den ersten Wert abziehst solltest du deine Differenz haben.
Vielleicht gibt es auch sowas wie eine kumulative Differenz habe auf die schnelle aber nichts gefunden.

void 24.07.2007 14:02

danke, opa - genau das habe ich mit
Zitat:

Original geschrieben von void
aber vielleicht weiß ja jemand einen einfachen weg
und
Zitat:

Original geschrieben von void
wenn man geschickt ist, bekommt man das hin (in einem statement) :D
gemeint...

wie war das nochmal?
Zitat:

Original geschrieben von kingchaos01
Und wie heißt's so schön: Wer lesen kann, ist klar im Vorteil!
:(


The_Lord_of_Midnight 24.07.2007 23:54

Ok, jetzt habe ich zumindest die Frage jetzt richtig verstanden.
Ganz verkalkt bin ich also noch nicht.

Funkts mit der obigen Antwort ?

Ps:
Seids doch nicht immer gleich so angrührt und zierts euch nicht so.
:rolleyes:
Seids doch froh, daß ihr im Forum jemand habts, der euch hilft und daß ihr nicht bei allen Problemen auf euch alleine gestellt seid !

kingchaos01 25.07.2007 08:47

Danke Opa für den entscheidenden Hinweis!

Biri 25.07.2007 10:39

hi,

wenn es nicht unbedingt sein MUSS, würde ich das dann aber doch programmatisch lösen. SQL ist nun mal eine mengenbasierende Abfragesprache (das nur als anmerkung, wenn du öfter was in die richtung machen möchtest), wo die Satzreihenfolge keine Rolle spielen sollte - wenn doch so ist das imho. bissl "vergewaltigung" von sql.

Das wichtigste is aber, dass es funktioniert. :D

fg
hannes

kingchaos01 25.07.2007 10:46

Hi!
Hab nun auch noch einiges zur "Mengenbasiertheit" von SQL gelesen (da ist umdenken gefragt).
Die Tabellen liegen von einem Messprogamm im Access-Format vor, da kann ich nichts dran ändern.
Zwischenzeitlich ist das Problem gelöst, mit dem folgenden Statement komme ich wie gewünscht auf die Differenzen der Spalte "s".

Code:

SELECT a.s, (SELECT max(b.s)  FROM Tabelle WHERE b.s < a.s) AS [kumuliert], (a.s - kumuliert) as differenz
FROM Tabelle AS a;


The_Lord_of_Midnight 25.07.2007 20:17

Ein wichtiger Grund, warum man manche Dinge kompliziert in SQL löst ist, daß die Performance oft um den Faktor 100 besser ist.
Habe auch schon 1000fache Geschwinigkeiten gesehen im Gegensatz zu einem programmatischen Ansatz.

Bei ein zwar Zeilen ist das egal, aber wenns um Hunderttausende oder sogar um Millionen von Records geht, dann nicht mehr.


Alle Zeitangaben in WEZ +2. Es ist jetzt 16:26 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag