Fortlaufende Nummer durch Anzahl in einer anderen Spalte

Dropout

Neuer Benutzer
Beiträge
3
Folgendes Problem:
Eine mysql Tabelle mit mehreren Spalten.
In einer Spalte wird durch ein Formular die Anzahl für gewünschte Gutscheine vergeben.
Wie bekomme ich es hin, das automatisch in einer anderen Spalte ebenso viele Nummern vergeben werden?
Und dann auch noch fortlaufend pro Kunde?

Beispiel:
Kunde A / Anzahl 4 / Gutscheinnummer 01, 02, 03, 04
Kunde B / Anzahl 2 / Gutscheinnummer 05, 06
Kunde C / Anzahl 3 / Gutscheinnummer 07, 08, 09
usw.

Bin für jeden Vorschlag dankbar...
 
Werbung:
Mit MySQL wird das, ähm, sportlich. Mal eine grundlegende Idee mit PostgreSQL:

Code:
test=*# select * from dropout ;
  kunde  | anzahl | nummern
---------+--------+---------
 Kunde A |  4 |
 Kunde B |  2 |
 Kunde C |  3 |
(3 Zeilen)

test=*# select kunde, anzahl, array_to_string(array_agg(x.s),',') from (select kunde, anzahl, sum(anzahl) over (order by kunde) - anzahl +1 as von, sum(anzahl) over (order by kunde)  as bis from dropout) d left join lateral (select * from generate_series(d.von, d.bis)) x(s) on (true) group by kunde, anzahl order by kunde;
  kunde  | anzahl | array_to_string
---------+--------+-----------------
 Kunde A |  4 | 1,2,3,4
 Kunde B |  2 | 5,6
 Kunde C |  3 | 7,8,9
(3 Zeilen)

Das Update spare ich mir hier erst einmal der Einfachkeit halber.
 
darf es noch mit führenden Nullen sein?

Code:
test=*# select kunde, anzahl, array_to_string(array_agg(to_char(x.s,'009')),',') from (select kunde, anzahl, sum(anzahl) over (order by kunde) - anzahl +1 as von, sum(anzahl) over (order by kunde)  as bis from dropout) d left join lateral (select * from generate_series(d.von, d.bis)) x(s) on (true) group by kunde, anzahl order by kunde;
  kunde  | anzahl |  array_to_string   
---------+--------+---------------------
 Kunde A |  4 |  001, 002, 003, 004
 Kunde B |  2 |  005, 006
 Kunde C |  3 |  007, 008, 009
(3 Zeilen)

test=*#
 
Hallo akretschmer,
danke für deine Antwort. Aber PostgreSQL ist bei unserem 1und1 Paket leider nicht vorgesehen.
Muss schon in mysql sein.

Trotzdem danke...
 
Ist das alles in einer Tabelle gespeichert?
Dann wäre es eine Überlegung wert das in zwei Tabellen aufzuteilen.

Die Spalte Anzahl wäre dann überflüssig, da es sich aus der Anzahl Gutscheine die einem Kunden zugeordnet sind ergiebig.

Problem erledigt, MySQL kann bleiben ;)
 
Zwei Tabellen: Kunde und Gutschein verbunden per Fremdschlüssel.
Bekommt ein Kunde Gutscheine werden diese in die Gutscheintabelle eingetragen.

Möchte ich die Anzahl wissen, muss ich nur die Gutscheine die ein Kunde besitzt zählen.

Das Eintragen der Gutscheine mit der gewünschten Anzahl übernimmt die Anwendung, das sollte überschaubarer Aufwand sein. Die Nummerierung kann per AutoInc Feld erfolgen. Wenn die Anzeige an der Oberfläche mit führenden Nullen erfolgen soll, wird dies in der Anzeige so formatiert.
 
Werbung:
Zurück
Oben