0

Ist es möglich, mehrere Schemas in meiner Redshift-Datenbank abzufragen und die Ergebnisse zu kombinieren?AWS Redshift Abfrage mehrere Schemas

Etwas wie folgt aus:

SELECT DISTINCT name, SUM(usage) AS totalUsage 
FROM schemaOne.terms, schemaTwo.terms 

wird einen Fehler werfen:

Amazon Invalid operation: column reference "name" is ambiguous;

Also, das ist möglich und würde dies eine gute Praxis? Ich möchte für jeden Client ein Schema erstellen, das seine eigenen Terms (Tags) -Tabelle und andere Tabellen hat.

Zum Beispiel

SchemaOne: Begriffe

id, name, description, usage 
_______________________________ 
1 css CSS is bla. 14 
2 html HTML rocks! 9 

SchemaTwo: Begriffe

id, name, description, usage 
_______________________________ 
1 css CSS is cool. 8 
2 other x    4 

Nun möchte Ich mag die Ergebnisse kombinieren, was könnte Ausgang so etwas wie:

name totalUsage 
_________________ 
css 22 
html 9 
other 4 

Antwort

4

Zuerst tun UNION ALL in einer abgeleiteten Tabelle gelten dann GROUP BY:

select name, sum(usage) as totalUsage 
from 
(
    select name, usage 
    from SchemaOne.terms 
    union all 
    select name, usage 
    from SchemaTwo.terms 
) dt 
group by name 

Beachten Sie, dass einige Produkte name und usage als reservierte Wörter haben, so dass Sie sie als "name" und/oder "usage" abgrenzen müssen.

Vielleicht ein bessere Performance Version:

select name, sum(usage) as totalUsage 
from 
(
    select name, sum(usage) as usage 
    from SchemaOne.terms 
    group by name 
    union all 
    select name, sum(usage) as usage 
    from SchemaTwo.terms 
    group by name 
) dt 
group by name 

Ursprüngliche Antwort:

Wenn die gleichen Spaltennamen in mehr als eine Tabelle vorhanden ist, müssen Sie diese Spalte qualifizieren, dh setzten Sie die Tabellennamen vor der Spaltenname:

SELECT DISTINCT schemaOne.terms.name, SUM(usage) as totalUsage 
FROM schemaOne.terms, schemaTwo.terms 

Tabellenaliasnamen sind bequem:

SELECT DISTINCT s1t.name, SUM(usage) as totalUsage 
FROM schemaOne.terms s1t, schemaTwo.terms s2t 
+0

Aber was ich suche ist, die Ergebnisse von beiden/multiple Schemas zu kombinieren – JasonK

+0

Kombinieren wie? Fügen Sie einige Beispieltabellendaten für Ihre zwei Tabellen und das erwartete Ergebnis hinzu. – jarlh

+0

Ich habe ein Beispiel zu meiner Frage hinzugefügt. – JasonK