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-Key: 217364

Url: https://administrator.de/contentid/217364

Printed on: April 26, 2024 at 10:04 o'clock

Member: colinardo
colinardo Sep 19, 2013 updated at 17:00:55 (UTC)
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
Member: it-frosch
it-frosch Sep 19, 2013 at 14:09:59 (UTC)
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
Member: Biber
Biber Sep 19, 2013, updated at Sep 20, 2013 at 08:40:23 (UTC)
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
Member: FlorianW
FlorianW Sep 20, 2013 at 05:24:58 (UTC)
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!