Hallo zusammen,
ich wurde heute mit einem Problem konfrontiert, dass mir so bisher eigentlich nicht untergekommen ist
Ich soll Abfrageergebnisse als csv-Datei liefern, die dann in Excel geladen werden und per Makro in Diagramme umgewandelt werden. Die Makros stehen schon und sollen erstmal nicht verändert werden, das heißt das CSV-Format ist mir genau vorgegeben. Leider erwarten diese Makros Ergebnisstabellen, bei denen die Ergebnisse nicht nur Zeilenweise sondern auch Spaltenweise dynamisch sind.
Ich bin mir nicht sicher, ob so ein Ansatz mit einer Datenbankanfrage überhaupt möglich ist, mir fällt zumindest im Moment nix Gescheites dazu ein. Zur Klärung hier mal ein Beispiel:
Nehmen wir an, wir haben eine Tabelle in der für alle Bauteile eines bestimmten Typs (z.B. Typ Stoßstange) Fehler beim Produktionsvorgang abgespeichert werden. Dafür haben wir eine Tabelle, in der alle aufgetretenen Fehler verzeichent sind, und zwar bezüglich eines Bauteils (für jede konkrete Stoßstange, die per id gezeichnet ist) und der Stelle, an der der Fehler auftrat (die Naht). Sie könnte z.B. so aussehen:
bauteil_id Naht_id Fehlercode
1 Naht_1 5
1 Naht_1 3
1 Naht_2 5
1 Naht_2 7
2 Naht_1 4
2 Naht_2 6
2 Naht_2 7
wobei bauteil_id und Naht_id eben foreign keys sind. An der Stoßstange mit der id 1 traten also die Fehler 5 und 3 an der Naht mit der Naht_id Naht_1 auf, die Fehler 5 und 7 an Naht_2. An der nächsten Stoßstange mit der id 2 trat dann an Naht_1 Fehler 4 auf usw.
Erwartet wird nun eine Abfrage, die z.B. für jedes Bauteil für alle Nähte des Bauteils (es gibt eine Tabelle in der alle möglichen Fehlerstellen (also Nähte) des Bauteils gelistet sind) angibt, ob dort Fehler aufgetreten sind oder nicht. Nehmen wir an, eine Stoßstange hätte 3 Nähte. Das Ganze sähe dann folgendermaßen aus:
Bauteil_id Naht_1 Naht_2 Naht_3 usw.
1 1 1 0
2 1 1 0
d.h. pro Bauteil genau eine Zeile und eine dynamische Spaltenanzahl, nämlich pro Naht aus der Nahttabelle eine Spalte (betitelt mit der jeweiligen Naht_id). Als Wert steht in den Nahtspalten 0 falls kein Fehler an dieser Naht auftrat, 1 wenn 1 oder mehr Fehler auftraten, also quasi „Ist die Naht korrekt oder nicht“. Ich habe nun keine Ahnung, wie man dynamisch aufgrund von Informationen in einer anderen Tabelle (der Nahttabelle) die Spaltenanzahl erzeugen und diese dann auch noch mit Werten betiteln soll. Gibt es dafür irgendeinen Weg, den ich einfach nicht sehe? Ich rede hier davon, dass das Ganze durch eine Datenbankabfrage gelöst werden soll, nicht über die Möglichkeit, die Daten per Programm aus der Datenbank zu holen und dann ein Programm die gewünschte CSV-Datei zusammenbasteln zu lassen. Das ist natürlich möglich, wäre aber viel zu starr und ich müsste jeden Select extra behandeln (es gibt noch viel mehr Typen als die Stoßstange und alle haben eigene Nahtdefinitionen etc.).
Gibt es dafür eine Datenbankseitige Lösungsmöglichkeit? Ich hoffe das Problem ist verständlich geschildert, bei Rückfragen versuch ich natürlich noch mal, das Ganze zu erklären