PDA

Vollständige Version anzeigen : Abfrage zwei Tabellen - ein Bericht


ForumNight
19.10.2011, 15:12
Moin alle zusammen,

suche eine Lösung für folgendes Problem:

in meiner Datenbank gibt es zwei Tabellen mit gleichen Aufbau.
In Tabelle A [Mastertabelle] stehen bspw. Datensätze mit Datum von 01.10.11 bis zum 15.10.11.
In Tabelle B stehen Datensätze mit Datum vom 12.10.11 bis 30.10.11.

Die Datensätze, die sich uberschneiden - 12. bis einschl. 15.10.11 - sind in beiden Tabellen vorhanden

Nun zu meinem eigentlichen Problem:

In einem Bericht soll für einen Monat - in diesem Fall Oktober - alle Datensätze, sofern vorhanden - vom 01.10 bis zum 30.10.11 gedruckt werden.

Alle Datensätze aus der Tabelle B für die es in Tabelle A bereits ein identisches Datum gibt, sollen nicht gedruckt werden, bzw. in der Abfrage
erscheinen.

Beispiel:

Tabelle A:
11.10.11 Frau Susanne Post
12.10.11 Herr Fritz Alberts
13.10.11 Frau Moni Grau
14.10.11 Herr Viktor Heib

Tabelle B:

12.10.11 Herr Fritz Alberts
13.10.11 Frau Moni Grau
14.10.11 Herr Viktor Heib
15.10.11 Frau Sonja Kraus

Ergebnis der Abfrag soll so aussehen:

11.10.11 Frau Susanne Post
12.10.11 Herr Fritz Alberts
13.10.11 Frau Moni Grau
14.10.11 Herr Viktor Heib
15.10.11 Frau Sonja Kraus

Frage :
Kann mir jemand sagen, wie die Abfrage gestaltet werden muss, um og Ergebnis zu erhalten ?

Meinen besten Dank im voraus.

Atrus2711
19.10.2011, 15:18
SELECT * FROM A
UNION
SELECT * FROM B

Obacht: nicht UNION ALL, sonst kommen die Duplikate wieder dazu.

ForumNight
29.10.2011, 02:07
Hallo Atrus2711,

bin leider jetzt erst dazu gekommen Deinen Tipp auszuprobieren.

Wenn ich die beiden Tabellen wie beschrieben mit dieser UNION-Abfrage verbinde, erscheinen immer alle Datensätze der Tabelle A und der Tabelle B - egal ob ich UNION oder UNION ALL benutze.

Frage :
Kann in der UNION-Afrage ein Kriterium eingebaut werden, welches in etwa so aussieht:

Ziege alle Datensätze der Tabelle A und nur die Datensätze aus Tabelle B, deren Datum nicht im neuen Abfrageergebnis - bzw. der Tabelle A - stehen ?

Wenn zum Beispiel für den 13.11.11 ein Datensatz in Tabelle A und in Tabelle B vorhanden ist, soll nur der DS aus Tabelle A berücksichtigt werden und der DS aus Tabelle B muss ignoriert werden.

Ich hoffe Du kannst mir weiterhelfen.


besten Dank im voraus

ebs17
29.10.2011, 10:39
UNION-Afrage funktioniert nicht
Doch, das tut sie. Allerdings bezieht sie Gleichheit auf alle Felder in Kombination (wie DISTINCT) und nicht auf einzelne Felder, auf die man schaut.
Für Deine Beispieldaten passt der Vorschlag 100%-ig.

Selbstverständlich kann man Deine Konkretisierung umsetzen (TabelleA UNION Inkonsistenzabfrage) und dabei dann wählbare Schlüssel nutzen.
Man kann sich aber auch Gedanken machen, warum strukturgleiche Daten in verschiedenen Tabellen liegen müssen. Liegen diese in einer Tabelle mit passend gesetzten eindeutigen Indizes, gibt es keine Duplikate, und eine nachfolgende Darstellung wo auch immer ist kein Problem. (Manchmal ist Normalisierung keine graue Theorie, sondern Bedienungsanleitung für einfachstes Handeln).