Hi nochmal,
also dieses Beispiel mit den Gruppen und den Namen sollte wie gesagt einfach nur das einfachste Beispiel sein, das das gleiche Problem widerspiegelt …
Nachmal zuerst das reale Problem:
Es gibt x Kunden und y Artikel.
Jeder Kunde hat beliebig viele höchsteigene Artikelsonderpreise … allerdings mindestens einen Artikelsonderpreis.
Datengrundlage (von mir aus als Oracle-DB):
create table KUNDEN (
KUNDEN\_ID integer primary key,
NAME varchar(200),
STRASSE varchar(200),
PLZ varchar(10),
ORT varchar(200),
...
);
create table ARTIKEL\_ID (
ARTIKEL\_ID integer primary key,
ARTIKEL\_NAME varchar(200),
...
);
create table KUNDEN\_ARTIKELPREISE (
KUNDEN\_ID integer,
ARTIKEL\_ID integer,
PREIS decimal(10,2),
constraint ka\_pk primary key (KUNDEN\_ID, ARTIKEL\_ID),
constraint ka\_fk1 foreign key (KUNDEN\_ID) reference KUNDEN (KUNDEN\_ID),
constraint ka\_fk2 foreign key (ARTIKEL\_ID) reference ARTIKEL (ARTIKEL\_ID)
);
Darf gerne auch un-normalisiert sein:
create view DATEN as
select \* from KUNDEN k, ARTIKEL a, KUNDEN\_ARTIKELPREISE p
where p.KUNDEN\_ID=k.KUNDEN\_ID
and p.ARTIKEL\_ID=a.ARTIKEL\_ID
order by p.KUNDEN\_ID, p.ARTIKEL\_ID
Nun soll ein Sereiendruck getätigt werden, der für jeden Kunden GENAU EINEN Brief erstellt, in dem dieser seine neuen Sonderpreise aufgelistet bekommt.
Inhaltlich beispielsweise:
>
>
> >
Sehr geehrte® Frau/Herr >,
leider mussten wir aus unser Preise um 2% erhöhen.
Ihre persönliche Preisliste sieht nun folgendermaßen aus:
\> \> \>
\> \> \>
\> \> \>
\> \> \>
... ... ...
Wir bedanken uns für Ihr Verständnis und verbleiben
mit freundlichen Grüßen
Ihr Firma-Mustermann-Team
So: Das Problem von mir ist, dass ich nicht weiß ob und wenn ja wie man so 'ne Tabelle dynamisch in den Serienbrief einbaut (soll heißen, die Anzahl der Tabellenzeilen sind bei fast jedem Brief verschieden).
Und die Preislisten sollen wirklich als mehr oder wenig schön gestaltete Tabellen erscheinen … also nicht einfach nur die Spalten durch Tabs trennen.
Bezogen auf das Gruppen-Mitglieder-Beispiel bedeutet das, dass die Tabelle natürlich nicht nur sechs Datensätze haben soll sondern von mir aus 600 Datensätze, wobei z. B. folgendes gelten könnte:
select count(*) from gruppen_mitglieder => 600
select count(distinct GRUPPENID) => 160
select min(GRUPPENID) from gruppen_mitglieder => 1
select max(GRUPPENID) from gruppen_mitglieder => 160
select max(ANZAHL) from (select count(*) as ANZAHL from gruppen_mitglieder group by GRUPPENID) => 17
Gruß und wie immer Danke im Voraus
Lala
PS: Diese „Linka“ in meiner letzten Mail sollte natürlich „Linda“ heißen … kleiner Vertipper …
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]