Seite 1 von 1

Bericht mit Daten aus n:m Beziehung

Verfasst: So, 05.06.2011 00:32
von paderborn00
Hallo,

ich habe ein Problem mit der Erstellung von Datenbankberichten mit Feldern aus zwei verknüpften Tabellen.
Kurz gefasst habe ich eine Tabelle mit Szenen und eine mit Darstellern, beide sind über eine Tabelle Xref_Szenen_Darsteller und die jeweiligen Primärschlüssel SzenenId und DarstellerId verknüpft.
Jede Szene hat eine Nummer, einen Motiv (Ort), eine kurze Inhaltsbeschreibung, ...
Wenn ich nun eine Abfrage erstelle, um beide Tabellen zu verbinden, erhalte ich für jeden Eintrag aus der Xref_Szenen_Darsteller einen eigenen Datensatz.

Szene1 Darsteller1 Motiv1 Inhalt1
Szene1 Darsteller2 Motiv1 Inhalt1
Szene1 Darsteller3 Motiv1 Inhalt1

Szene2 Darsteller2 Motiv2 Inhalt2

Szene3 Darsteller1 Motiv3 Inhalt3
Szene3 Darsteller4 Motiv3 Inhalt3
.....

Ich möchte aber Berichte mit folgenden Layouts erstellen und benötige dafür einen Datensatz pro Szene.
Wiederholdende Werte verstecken hilft mir auch nicht weiter, da ich den Bericht auch in der breite nutzen und verschiedene Felder nebeneinander anordnen will.

Layout 1:

SzenenNummer - Motiv
--------------------------------------------------------------------------------------------
Darstellername1 Requisiten
Darstellername2 Requsiiten
Darstellername3 ...
...
--------------------------------------------------------------------------------------------
Inhalt der Szene als Freitext, der meist eine halbe Seite lang ist..........

Layout 2:

Szenennummer - Motiv
DarstellerId1,DarstellerId2,DarstellerId3,...,DarstellerIdn
Inhalt der Szene als Freitext

Layout 1 erstelle ich derzeit über ein Openoffice-Writer Dokument, das per "NächsterDatensatz" und "Versteckter Absatz" so lange die zugrunde liegende Abfrage durchläuft, bis ein von mir erstellter Endmarker (Darsteller mit Namen ZZZ) erreicht ist.
In der Hoffnung, dass das ganze auch einfacher geht, habe ich jetzt lange gesucht, aber nichts gefunden.

Lösungsansatz 1:
Ich erstelle eine Abfrage in der ich im Stile von CONCAT aber über mehrere Datensätze die Namen der Darsteller in ein Feld schreibe, so dass ich am Ende jeweils einen String mit den Namen bzw. den IDs der Darsteller erhalte.
Wenn ich es richtig verstanden habe, geht das mit Base und HSQL nicht?!

Lösungsansatz 2:
Ich erstelle ein Makro, dass in zwei Felder der Tabelle "Szenen" bei jedem Datensatzwechsel jeweils die Namen der Darsteller durch Zeilenumbruch getrennt bzw. die IDs der Darsteller durch Komma getrennt schreibt.
Diese beiden Felder verwende ich dann in der Abfrage.
Das ist für ich leider ein sehr komplexes Thema und wiederspricht auch eigentlich der Idee der Datenbank, da ich hier die Daten mehrfach redundant in eine Tabelle schreibe. Im Moment erscheint es mir aber als die einzige Möglichkeit.

Über weitere, einfache Lösungsansätze würde ich mich freuen, und vielleicht gibt es ja doch die Möglichkeit mit einer einfachen Abfrage weiterzukommen.

Vielen Dank,

Nils