Funktion UNION über mehrere Tabellen

Mikelook

Neuer Benutzer
Beiträge
2
Hallo zusammen,

habe eine Frage an die Profis!
Problembeschreibung:

1. mehrere Tabellen mit den Name Daten1, Daten2, Daten3, Daten4
2. die Tabellen mit mehrerer nicht immer gleicher Anzahl von Feldern, aber die unten abgebildeten sind immer vorhanden:

Vorname / Name / Strasse / Datum /

3. es sollten die Tabellen verglichen und für die Ausgabe zusammengefasst werden - nach Datum
4. als Ergebnis soll die Häufigkeit des Vorkommens eines Datum in allen Tabellen chronologisch ausgegeben werden, etwa in Form:

Datum Anzahl
10.10.2018 5
11.10.2018 2
12.10.2018 8
13.10.2018 5

So etwa habe ich es versucht, aber es kommen nicht die "richtigen" Werte - Häufigkeiten raus..

SELECT
Datum, COUNT(*)
FROM ( SELECT Datum FROM Daten2
UNION ALL
SELECT Datum FROM Daten3
UNION ALL
SELECT Datum FROM Daten4
UNION ALL
SELECT Datum FROM Daten5
)
Daten1
GROUP BY Datum

Kann mir bitte jemand bei dem Problem helfen?

THX

Mike
 
Werbung:
Keiner mit einer Idee?

Dann hilft vielleicht dieses, um zu verstehen, was ich meine :)

Daten1:

Vorname | Name | Strasse | Datum
V1 | N1 |S1 |01.10.2018
V2 |N2 |S2 |01.10.2018
V3 | N3 |S3 |02.10.2018
V1 | N1 |S1 |03.10.2018
V1 | N1 |S1 |04.10.2018

Daten2:

Vorname | Name | Strasse | Datum
V12 | N12 |S16 |01.10.2018
V23 |N13 |S21 |02.10.2018
V31 | N13 |S31 |02.10.2018
V11 | N15 |S12 |03.10.2018
V12 | N16 |S14 |04.10.2018

Daten 3....Daten x mit ähnlichem Aufbau.

Ausgabe:

Datum | Anzahl des gleichen Datums
01.10.2018 |3
02.10.2018 | 4
03.10.2018 | 8
04.10.2018 | 7

Es soll die Angabe von der Menge der Termine eines Datum ausgegeben werden.

Danke im Voraus!

Mike
 
Werbung:
dein im ersten Posting gezeigtes SQL funktioniert bei mir:

Code:
test=*# create table daten2(datum date);
CREATE TABLE
test=*# create table daten3(datum date);
CREATE TABLE
test=*# create table daten4(datum date);
CREATE TABLE
test=*# create table daten5(datum date);
CREATE TABLE
test=*# insert into daten2 select current_date;
INSERT 0 1
test=*# insert into daten3 select current_date+1;
INSERT 0 1
test=*# insert into daten3 select current_date+1;
INSERT 0 1
test=*# insert into daten4 select current_date+2;
INSERT 0 1
test=*# insert into daten4 select current_date+2;
INSERT 0 1
test=*# insert into daten4 select current_date+2;
INSERT 0 1
test=*# insert into daten5 select current_date+3;
INSERT 0 1
test=*# insert into daten5 select current_date+3;
INSERT 0 1
test=*# insert into daten5 select current_date+3;
INSERT 0 1
test=*# insert into daten5 select current_date+3;
INSERT 0 1
test=*# select datum, count(*) from (select datum from daten2 union all select datum from daten3 union all select datum from daten4 union all select datum from daten5) daten1 group by datum order by datum;
   datum    | count
------------+-------
 2018-10-17 |     1
 2018-10-18 |     2
 2018-10-19 |     3
 2018-10-20 |     4
(4 rows)

wenn das bei Dir nicht klappt, dann muß wohl die verwendete Datenbank kapott sein.
 
Zurück
Oben