union: Ausgabe erst dann, wenn eine Bedingung in allen Tabellen erfüllt ist

MarcoMySQL

Neuer Benutzer
Beiträge
2
IdJahrErgebnis 1Ergebnis 2Value 1Value 2Value 3
12018AB
22019BA
32020CD
42019CD
52018CD

Ich habe 3 Tabellen von Jahr 2018 - 2020, die Tabellen haben die gleiche Anzahl an Spalten. Es sollen die Ergebnisse untereinander ausgeben werden, wie in Zeile 3, 4 und 5.
Die Zeilen 1 und 2 aber soll aber nicht mit ausgegeben werden, die Bedingung der Values waren richtig deshalb werden Sie angezeigt.
Es war aber nicht in allen Jahren.

Also: Ergebnis 1 und Ergebnis 2, müssen in allen Jahren stattgefunden haben.
 
Werbung:
Code:
(select * from daten_freq_2018
where (Value_1 > 0 or Value_2 > 0 or Value_3 > 0)
union
select * from daten_freq_2019
where (Value_1 > 0 or Value_2 > 0 or Value_3 > 0)
union
select * from daten_freq_2020
where (Value_1 > 0 or Value_2 > 0 or Value_3 > 0))
order by Ergebnis_1, Ergebnis_2, Jahr desc;


Ich möchte nur eine Ausgabe wenn Ergebnis 1 und Ergebnis 2, in allen Jahren war.
 
Werbung:
nun ja, tolle und einfach nachvollziehbare Beschreibung ...

Code:
postgres=# select * from z1;
 f1 | f2 
----+----
 a  | b
 b  | a
 c  | d
(3 rows)

postgres=# select * from z2;
 f1 | f2 
----+----
 c  | d
(1 row)

postgres=# select * from z3;
 f1 | f2 
----+----
 c  | d
(1 row)

postgres=# with foo as (select * from z1 union all select * from z2 union all select * from z3) select * from foo;
 f1 | f2 
----+----
 a  | b
 b  | a
 c  | d
 c  | d
 c  | d
(5 rows)

postgres=# with foo as (select * from z1 union all select * from z2 union all select * from z3) select f1, f2 from foo group by f1,f2 having count((f1,f2))=3;
 f1 | f2 
----+----
 c  | d
(1 row)

postgres=#

so vielleicht?
 
Zurück
Oben