0

Redshiftデータベース内の複数のスキーマを照会し、結果を結合することは可能ですか?AWS Redshiftクエリ複数スキーマ

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

は、エラーがスローされます:このような

何か

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

だから、これは可能であり、これは良い練習だろうか?私は独自の用語(タグ)テーブルと他のテーブルを持つ各クライアントのためのスキーマを作成したいと思います。例えば

SchemaOne:用語

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

がSchemaTwo:

:用語

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

今私ができる出力のようなもの、結果を結合したいと思います

name totalUsage 
_________________ 
css 22 
html 9 
other 4 

答えて

4

まず派生テーブルでUNION ALLを行い、その後、GROUP BY適用されます:いくつかの製品が予約語としてnameusageを持っているので、あなたが"name"および/または"usage"としてそれらを区切るために必要があること

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 

注意を。

おそらく、より良いパフォーマンスバージョン:

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 

オリジナルの答え

同じ列名が複数の表に存在する場合、あなたはその列を修飾する必要があり、すなわち前にテーブル名を入れてカラム名:

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

表の別名が便利です:

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

私が探しているのは、両方の/複数のスキーマの結果を組み合わせることです – JasonK

+0

どのように組み合わせますか?あなたの2つのテーブルのためのいくつかのサンプルテーブルデータと期待される結果を追加してください。 – jarlh

+0

私は質問に例を追加しました。 – JasonK

関連する問題