For Each // If then else ?? SQL Query

Kazume

Benutzer
Beiträge
15
Hallo,

erneut muss ich um Hilfe bitten bei einer "komplexeren?" Problematik.

In der Tabelle s_order_details stehen bestellte Artikel drin.
Auf dem Lieferschein bekommen diese eine Position zugeteilt (Pos1, Pos2, Pos3).
Die Position wird bestimmt wie die Artikel in die Datenbank geschrieben werden, anhand der ID.

Ordernumber 1001 mit der ID 12 steht auf Pos1
Ordernumber 1001 mit der ID 13 steht auf Pos2
Ordernumber 1002 mit der ID 14 steht auf Pos1
Ordernumber 1002 mit der ID 15 steht auf Pos2
Ordernumber 1002 mit der ID 16 steht auf Pos3

Ich würde gerne die Position 1 - n für jeden Artikel daneben stehen haben.


Falls mir einer Tipps geben könnte wäre das spitze :)
 
Werbung:
Du hast:

Code:
test=*# select * from kazume ;
 ordernummer | pos
-------------+-----
  1001 |  12
  1001 |  13
  1002 |  14
  1002 |  15
  1002 |  16
(5 Zeilen)

und willst:

Code:
test=*# select *, row_number() over (partition by ordernummer order by pos) as position from kazume ;
 ordernummer | pos | position
-------------+-----+----------
  1001 |  12 |  1
  1001 |  13 |  2
  1002 |  14 |  1
  1002 |  15 |  2
  1002 |  16 |  3
(5 Zeilen)


Dachte ich zumindest ...
 
Gut im prinzip ist das so schon korrekt, außer das die Pos die ID der Tabelle ist.

row_number() over erkennt er schon mal nicht.

Bisher habe ich

Code:
SET @row_number = 0;
@row_number := @row_number +1

Jetzt versuche ich nur das irgendwie mit dem "partition by so.ordernumber order by so.id" zu verbinden :D
 
Es ist also bei MySQL nicht möglich soetwas in der Art hinzubekommen?

Wenn Ordernumber = Ordernumber
Dann gebe aus 1 - n
Wenn Ordernumber ungleich Ordernumber
Dann wiederhole.

Dann muss man ja nicht unbedingt die ID mitnehmen.
 
Werbung:
Zurück
Oben