Artorius
Mitglied Plutonium
Hallo,
ich möchte gerne per Querie die Zahl aus einer Spalte in der Tabelle TAB1 mit dem Ergebnis einer Abfrage auf die Tabelle TAB2 addieren. Das Query soll zudem auf unterschiedlichen Datenbanken laufen
Folgendes habe ich gebastelt:
Dies schlägt allerdings fehl, wenn die where Bedingung auf TAB1 kein Ergebnis zurückliefert.
Es soll aber berücksichtigt werden, dass sowohl Tab1 als auch Tab2 kein Ergebnis lieferen kann. Die Where Bedingungen sorgen aber dafür, dass immer nur maximal eine Zeile selektiert wird.
Nun habe ich das ganze über ein Full join probiert:
Das scheint zu funktionieren. Aber, frage ich mich, ob das Ganze nicht doch etwas eleganter geht. Gerade wegen der join Bedingung sieht das ganze doch eher nach "Missbrauch" aus. Oder geht das schon so in Ordnung?
*gruß*
Artorius
ich möchte gerne per Querie die Zahl aus einer Spalte in der Tabelle TAB1 mit dem Ergebnis einer Abfrage auf die Tabelle TAB2 addieren. Das Query soll zudem auf unterschiedlichen Datenbanken laufen
Folgendes habe ich gebastelt:
SQL:
SELECT ANZAHL1
+ (SELECT Count(*) AS Anzahl2
FROM (SELECT ITEMS
FROM TAB2
WHERE ...
GROUP BY ITEMS))
FROM TAB1
WHERE ...
Es soll aber berücksichtigt werden, dass sowohl Tab1 als auch Tab2 kein Ergebnis lieferen kann. Die Where Bedingungen sorgen aber dafür, dass immer nur maximal eine Zeile selektiert wird.
Nun habe ich das ganze über ein Full join probiert:
SQL:
SELECT Nvl(A.ANZAHL1, 0) + Nvl(B.ANZAHL2, 0) AS Anzahl
FROM (SELECT ANZAHL1
FROM TAB1
WHERE ...) A
FULL JOIN (SELECT Count(*) AS Anzahl2
FROM (SELECT ITEMS
FROM TAB2
WHERE ...
GROUP BY ITEMS)) B
ON 1 = 1
Das scheint zu funktionieren. Aber, frage ich mich, ob das Ganze nicht doch etwas eleganter geht. Gerade wegen der join Bedingung sieht das ganze doch eher nach "Missbrauch" aus. Oder geht das schon so in Ordnung?
*gruß*
Artorius