Hallo Jason,
Du solltest Dich einfach dafür entscheiden, welches Deine "Linke Tabelle" und welches die "rechte Tabelle" ist.
Die Führung geht immer von der "Linken Tabelle" aus. Diese darfst Du in chaotischer Reihenfolge durcharbeiten und die "Rechte Tabelle" muss die dazu passeden Datensätze (DISTINCT ROWS) liefern.
Am sinnvollsten sit sicherlich, die Journalisten zu den "Linken" zu erklären, denn Du willst denen ja nur EINE MAIL mit jeweils mehreren passenden Konzerthinweisen schicken.
Andersherum wäre es, wenn Du die Konzerte eines Gebietes als "Linke Tabelle" deklarierst, dass du pro Konzert mehrere emails mit verschiedenen Empfängern generierst. Das wird bei den Journs aber bestimmt bald sauer aufstoßen.
Da du immer nur Teilmengen verarbeiten kannst, würde ich also ein Script für die VORGANGSVERARBEITUNG erstellen, dass die Konzerte nach links nimmt.
Die Schleife mit der Abfrage erfasst dann immer genau einen Jounalisten und die dazu passenden Konzerte. Also einen "Schritt" in der Journalistentabelle und ein Query auf die Konzerttabelle.
Wenn Deine Datenbank mehrplatz-dialogfähig ist, dann solltest Du zusätzlich eine Kontrolltabelle schreiben, in der Du die pro Info-Nummer (Aufruf des Vorgangs-Scriptes) einen Krontrolldatensatz für jede Journalisten-Konzertpaarung schreibst. Sollte nämlich während des Blätterns von einem zum nächsten "hinter Dir" einer dazugekommen sein, würde der ja keine Info erhalten haben. Den musst Du dann im Kontrolldurchgang erfassen. Wieviele Kontrolldurchgänge du machst, hängt von der Anzahl der Veränderungen der "Linken Tabelle" _während_ der Verarbeitung ab.
Bei Single-User-Betrieb oder Sperre der Tabellen während der Vorgangsbearbeitung ist der Aufwand sicher nicht nötig.
Du solltest aber unter der Info-Nummer erst die Kontrolldatensätze erstellen, und erst aus dieser Tabelle die Verarbeitung (email- Erzeugung) vornehmen. Überleg dir die möglichen Inkonsistenzen:
Solange in der Vorgangstabelle noch unbearbeitete Datensätze (Merker) enthalten sind, dürfen die beteiligten Datensätze der beiden m:n-Tabellen nicht gelöscht werden.
Die Erzeugung der m:n-Tabelle geht selbst bei großen Datenbeständen sehr schnell. Die Abarbeitung kann dann mehrere Stunden dauern.
Grüße aus http://www.braunschweig.de
Tom