florianw
Goto Top

SQL Abfrage für Etiketten, Extra Zeilen bei Zahl größer 1

Hallo,

bei folgender Tabelle:

Artikelnr/Stückzahl/Beschreibung

möchte ich eine SQL Abfrage wobei jede Position so oft kommt wie oft die Stückzahl vorhanden ist.
Grundproblem ist zB die Etikettierung von Artikeln.

Wenn ich den Artikel 3311 5x im lager habe benötige ich 5 Etiketten, er steht aber nur 1x in der Datenbank...

Danke schon jetzt für die Lösung,
es dürfte glaub ich relativ einfach sein, aber ich steh momentan auf der Leitung!

Content-ID: 217364

Url: https://administrator.de/forum/sql-abfrage-fuer-etiketten-extra-zeilen-bei-zahl-groesser-1-217364.html

Ausgedruckt am: 18.04.2025 um 19:04 Uhr

colinardo
colinardo 19.09.2013 aktualisiert um 19:00:55 Uhr
Goto Top
Hallo FlorianW,
mit deiner SQL-Abfrage bekommst du doch die Anzahl die zu drucken ist, schon im Feld "Stückzahl" mitgeliefert. Diese kannst du dann benutzen um entsprechende Anzahl an Etiketten zu drucken(FOR-Schleife). Denke das ist eher eine Frage wie du die Daten weiterverarbeitest. Dazu hast du uns hier aber zu wenig Informationen geliefert Programmiersprache, etc.

Grüße Uwe
it-frosch
it-frosch 19.09.2013 um 16:09:59 Uhr
Goto Top
Hallo Florian,

du könntest es so lösen:

Mit Hilfe einer procedure liest du die Anzahl und die Artikelnummer aus der Artikeltabelle aus und fügt in einer for Schleife so
oft die Artikelnr in eine Hilfstabelle ein wie die Anzahl des Artikels Schleifen zulässt.
Dann verwendest du die Hilfstabelle um deine Etiketten zu drucken.

grüße vom it-frosch
Biber
Biber 19.09.2013, aktualisiert am 20.09.2013 um 10:40:23 Uhr
Goto Top
Moin FlorianW,

je nach vorhandenem Datenbank-System geht es auch ohne temporäre Hilfstabelle bzw. mit einem SQL-Statement.

Aber dazu müsste wir wirklich minimal wissen, ob du mit Oracle oder mySQL oder gar mit etwas wie Access unterwegs bist.

Und wenn es unter ungünstigen Umständen ohne Procedure/ohne Programmlogik gemacht werden muss und nur ein Schmalspur-SQL-Umfang zur Verfügung steht, dann brauchst du eine Hilfstabelle.

Da du ja einen Feldnamen "Stückzahl" angegeben hast, gehe ich mal vom worst case M$-ACCESS aus.

Also dann:
  • Lege dir eine Hilfstabelle namens "Hilfstab" mit einem einzigen Feld"Dummyzahl", Typ Zahl an.
  • Fülle 10 Datensätze mit den Zahlen 0 bis 9

Danach kannst du hiermit bis zu 99 Etiketten (Stückzahl=99) drucken bzw diese Anzahl 99 Datensätze dafür erzeugen
SELECT a.ArtikelNr, a.Beschreibung
  , a.Stückzahl
  ,  Str( h.Anzahl+1) & " von " & str(a.Stückzahl) as Lfdnr  
FROM Artikel a, 
    (select Zehner+Einer as Anzahl  
    from (
    Select    hE.Dummyzahl as Einer
         , 10* hZ.Dummyzahl as Zehner 
     from Hilfstab hE, Hilfstab hZ) 
   ) h
Where a.Stückzahl >= h.Anzahl+1
order by a.ArtikelNr, h.Anzahl

Ausgabe:
ArtikelNr Beschreibung Stückzahl Lfdnr
2213	Artikel3314	4	 1 von  4
2213	Artikel3314	4	 2 von  4
2213	Artikel3314	4	 3 von  4
2213	Artikel3314	4	 4 von  4
3311	Artikel 3311	3	 1 von  3
3311	Artikel 3311	3	 2 von  3
3311	Artikel 3311	3	 3 von  3
4711	Artikel 4711	17	 1 von  17
4711	Artikel 4711	17	 2 von  17
4711	Artikel 4711	17	 3 von  17
4711	Artikel 4711	17	 4 von  17
4711	Artikel 4711	17	 5 von  17
4711	Artikel 4711	17	 6 von  17
4711	Artikel 4711	17	 7 von  17
4711	Artikel 4711	17	 8 von  17
4711	Artikel 4711	17	 9 von  17
4711	Artikel 4711	17	 10 von  17
4711	Artikel 4711	17	 11 von  17
4711	Artikel 4711	17	 12 von  17
4711	Artikel 4711	17	 13 von  17
4711	Artikel 4711	17	 14 von  17
4711	Artikel 4711	17	 15 von  17
4711	Artikel 4711	17	 16 von  17
4711	Artikel 4711	17	 17 von  17

Lässt sich mit der vorhandenen Tabelle Hilfstab auch auf 999 oder 9999999 Etiketten erweitern ohne viel Aufwand.

Grüße
Biber
FlorianW
FlorianW 20.09.2013 um 07:24:58 Uhr
Goto Top
Danke Biber genau so etwas hab ich gesucht,
hab ich gleich in meine Access-DB reingemacht und funktioniert schon!

Danke biber, Danke aber auch dem Rest!