Wert aus ersten vorhandenen Vorgangszähler

mymomo

Neuer Benutzer
Beiträge
2
Moin!

Ich hoffe ihr könnt mir helfen.
Folgendes Szenario:

Ein Kunde übernimmt ein bestehendes Karten-Guthabensystem, beginnt aber mit einer neuen Datenbank. Der Vorgangszähler jeder am System teilnehmenden Karte bleibt auf der Karte selbst aber erhalten.

Der Kunde möchte nun gerne wissen, wieviel Guthaben auf jeder Karte war, als sie das erste Mal mit der neuen Datenbank in Berührung kam.

Wir haben folgende relevanten Spalten:
Laufnummer
Vorgangszähler
altesGuthaben

Ich möchte nun für jede in der Tabelle (UMS_TC_U) vorhandenen Laufnummer den niedrigsten Vorgangszähler auslesen und das dort befindliche altesGuthaben auslesen.
Ich bekomm es leider nicht hin :eek:(
 
Werbung:
hier mal 2 Lösungen:

Code:
test=*# select * from mymomo ;
 lauf | vorgang | guthaben
------+---------+----------
  1 |  1 |  10
  1 |  2 |  8
  1 |  3 |  12
  2 |  1 |  13
  2 |  2 |  15
  2 |  3 |  16
  3 |  1 |  33
  3 |  2 |  32
  3 |  3 |  31
(9 rows)

test=*# select distinct on (lauf) lauf, vorgang, guthaben from mymomo order by lauf, vorgang;
 lauf | vorgang | guthaben
------+---------+----------
  1 |  1 |  10
  2 |  1 |  13
  3 |  1 |  33
(3 rows)

test=*# select * from mymomo where (lauf, vorgang) in (select lauf, min(vorgang) from mymomo group by lauf);
 lauf | vorgang | guthaben
------+---------+----------
  1 |  1 |  10
  2 |  1 |  13
  3 |  1 |  33
(3 rows)
 
Ich glaube die Syntax ist nicht MySQL-kompatibel, daher probier mal das hier:
Code:
SELECT   t.Laufnummer,
     t.Vorgangszaehler,
     u.altesGuthaben
FROM   (   SELECT   Laufnummer,
           min(Vorgangszaehler) AS Vorgangszaehler
       FROM   UMS_TC_U
       GROUP BY Laufnummer ) t
INNER JOIN UMS_TC_U u
ON     t.Laufnummer = u.Laufnummer
AND     t.Vorgangszaehler = u.Vorgangszaehler
 
Danke ukulele, das schaut sehr gut aus!

Auch danke an akretschmer. wie ukulele jedoch schon andeutete, war hier die Syntax falsch.
Leider habe ich bis auf einfachste Selectanfragen sonst kaum was mit SQL zutun, daher war es mir zumindest spontan nicht möglich rauszufinden, wo der Syntaxfehler bei deinem Aufruf lag. Da ich gestern aber auch keine Zeit mehr hatte mich weiter damit zu beschäftigen und heute Morgen direkt ukulele´s Antwort da war, blieb mir das ja nun eh erspart ;o)
 
Werbung:
Zurück
Oben