Daten aus versch. Tabellen via SQL horizontal in 1 Datensatz anzeigen?

TK8782

Neuer Benutzer
Beiträge
2
Hallo,

ich habe folgenden Fall in einer FireBird Datenbank:

Artikeldaten werden mit Preisen gepflegt. Die Staffelpreise stehen in einer Untertabelle, d.h. es gibt für 1 Artikel in der Untertabelle mehrere Datensätze mit unterschiedlichen Mengen / Preisen.

Nun möchte ich via SQL Daten aus der Haupttabelle und alle Preise aus der Untertabeller ermitteln, aber für jeden Artikel im Ergebnis nur 1 Datensatzzeile haben. Es soll pro Staffelpreis also nicht eine extra Zeile erzeugt werden sondern möglichst eine separate temporäre Spalte.

Bsp:
ArtikelNr Bezeichnung Menge VK
1 Testartikel 1 10,00
1 Testartikel 10 8,00
1 Testartikel 100 6,00
2 Testartikel2 1 11,00
2 Testartikel2 10 9,00

Als Ergebnis hätte ich nun gerne folgende Ausgabe:

ArtikelNr Bezeichnung Menge1 VK1 Menge2 VK2 Menge3 VK3 usw.
1 Testartikel 1 10,00 10 8,00 100 6,00
2 Testartikel2 1 11,00 10 9,00
usw.

Gibt es da eine Möglichkeit via SQL das zu lösen?

Vielen Dank.
 
Werbung:
Datenbanken sind keine Tabellenkalkulationen. In einem SELECT steht zur Planungszeit schon fest, wie viele Spalten des Ergebniss haben wird - das definierst Du in der Select-Liste. In Deinem Fall ist aber es nicht vorhersehbar, wie viele Einträge es in der Untertabelle es gibt.

Du kannst 2 Dinge machen:

  • dynamisch ein SQL erstellen. Dazu erst einmal schauen, wie viele Spalten wir denn haben müssen. Daraus dann dynamisch ein valides SQL erstellen und dieses dann ausführen. Das ginge (in PostgreSQL z.B.) via einer Stored Proc und EXECUTE. In PG gäbe es auch noch die Möglichkeit, dazu das Contrib-Extension tablefunc zu nutzen, diese enthält eine crosstab-Funktion.
  • diese Idee vergessen und nach einer anderen Lösung suchen


Andreas
 
Werbung:
Du kannst alle Preise in einer Spalte ausgeben mit Trennzeichen. Ob das aber in Firebird geht, weiß ich nicht. Auch ob das für weitere Verwendung sinnvoll ist kann ich nicht sagen.
 
Zurück
Oben