2016-10-31 8 views
1

Ich habe drei Tabellen, die ich in separaten Berichten erstellen, die UNIONS enthalten. Ich habe mich gefragt, ob es möglich wäre, einen großen Bericht zu erstellen, der die einzelnen UNIONs, die ich in anderen Berichten verwende, UNION ist.Ist eine Union in einer Union möglich?

Es sieht so etwas wie dies jetzt:

SELECT 
z.name, 
z.social 

FROM 
(SELECT * 
FROM 
(SELECT 
accta.name, 
accta.social 
FROM accta 
WHERE accta.name <> 'Bob' 
GROUP BY name 

UNION 

SELECT 
acctb.name, 
acctb.social 
FROM acctb 
GROUP BY name 

UNION 

SELECT 
acctc.name, 
acctc.social 
FROM acctc 
GROUP BY name) a 

UNION 

(SELECT 
accta.name, 
accta.social 
FROM accta 
GROUP BY name 

UNION 

SELECT 
acctb.name, 
acctb.social 
FROM acctb 
WHERE acctb.name <> 'Steve' 
GROUP BY name 

UNION 

SELECT 
acctc.name, 
acctc.social 
FROM acctc 
GROUP BY name) b 

) z 

GROUP BY z.name 

Also im Grunde Im unioning drei Tabellen Tabelle erstellen dann zur Vereinigung versucht, dass mit einer anderen Tabelle der Gewerkschaften gemacht.

Ist so etwas überhaupt möglich? Ich bekomme immer Fehler.

+0

Welche Art von Fehlern? – Krease

+0

Es gibt immer einen Fehler auf der ersten UNION nach Tabelle a –

+0

Nevermind ,, Ich habe es herausgefunden, Sie müssen die SELECT * -Anweisung vor Tabelle b ebenso; Andernfalls wählen Sie keine Daten für die Tabellen aus, für die UNION aktiviert ist –

Antwort

1

Ja.

Wenn Sie Hierarchie Ihre Gewerkschaften hinzufügen möchten, benutzen Sie einfach die Klammern:

SELECT columnName FROM tableName 
UNION (SELECT columnName FROM anotherTableName UNION SELECT columnName FROM thirdTableName) 
ORDER BY columnName; 
0

Es war einfach ein Fehler in der Syntax, muss ich die SELECT * Anweisung vor Tabelle b hinzuzufügen. Da der Code in meinem Beispiel ist, wird in Tabelle b nichts ausgewählt, so dass die Tabellen in keiner Weise unioning sind.