AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken [SQL] Zeilenwerte als Spalten ausgeben
Thema durchsuchen
Ansicht
Themen-Optionen

[SQL] Zeilenwerte als Spalten ausgeben

Ein Thema von Reinhardtinho · begonnen am 24. Mär 2009 · letzter Beitrag vom 24. Mär 2009
 
nahpets
(Gast)

n/a Beiträge
 
#6

Re: [SQL] Zeilenwerte als Spalten ausgeben

  Alt 24. Mär 2009, 13:06
Hallo,
Zitat von Reinhardtinho:
Da die Merkmale dynamisch sind, kann ich das nicht fest mit Size bzw. Color verdrahten. Zu Zeitpunkt der Abfrage kenne ich nicht alle Properties.
dann erstelle doch das SQL auch dynamisch:
SQL-Code:
select
  'select '
union all
select Distinct
  'ArticleProperty' + RTrim(TypeID) + '.Value As ' + RTrim(TypeID) + ', '
from articleproperty
union all
select
  'Article.ArticleNumber, '
+ 'Article.EAN, '
+ 'Article.Supplier '
+ 'from Article '
union all
select Distinct
  'left join ArticleProperty ArticleProperty' + RTrim(TypeID) + ' on article.articleNumber = '
+ 'ArticleProperty' + RTrim(TypeID) + '.articleNumber '
+ 'and ArticleProperty' + RTrim(TypeID) + '.TypeID = ''' + RTrim(TypeID) + ''''
from articleproperty
Vorgehen:

Dieses SQL ausführen, das Ergebnis auslesen und einer Query als SQL zuweisen und dann ausführen.

Es wird zuerst ein SQL erstellt, das für jeden Eintrag von TypeID eine Spalte in das SQL-Ergebnis schreibt und für jeden Eintrag von TypeID einen Left Join für das From erstellt.

Das hierdurch erstellte SQL entspricht dann immer dem aktuellen Datenbestand der Tabelle ArticleProperty. Das Gesamtergebnis enthält immer die Spalten ArticleNumber, EAN und Supplier, sowie für jeden Eintrag von TypeID in ArticleProperty eine weitere Spalte. Die dynamischen Spalten werden zuerst ausgegeben, um eine korrekte SQL-Syntax zu generieren, ohne auf eventuell überzählige Kommata achten zu müssen.

Diese SQL wurde mit dem oben aufgeführten SQL erstellt.
SQL-Code:
select
ArticlePropertyColor.Value As Color,
ArticlePropertyMaterial.Value As Material,
ArticlePropertySize.Value As Size,
Article.ArticleNumber, Article.EAN, Article.Supplier from Article
left join ArticleProperty ArticlePropertyColor on article.articleNumber = ArticlePropertyColor.articleNumber and ArticlePropertyColor.TypeID = 'Color'
left join ArticleProperty ArticlePropertyMaterial on article.articleNumber = ArticlePropertyMaterial.articleNumber and ArticlePropertyMaterial.TypeID = 'Material'
left join ArticleProperty ArticlePropertySize on article.articleNumber = ArticlePropertySize.articleNumber and ArticlePropertySize.TypeID = 'Size'
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:07 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz