2016-06-15 14 views
0

を持つテーブルが含まれているから、私は私がセクションでは、同じ名前のフィールドを

SELECT 
t1.field1, --comes from table A 
t2.field2, --comes from table B 
t1.field3, --I want to grab this from table A, but table B has an identically named field 
FROM 
[datasetName.tableA] t1, 
[datasetName.tableB] t2, 

を試みたしかし、それはエラー

を生成元

SELECT 
field1, --comes from table A 
field2, --comes from table B 
field3, --I want to grab this from table A, but table B has an identically named field 
FROM 
[datasetName.tableA], 
[datasetName.tableB], 

にしようとしているときにBigQuery内のテーブルから特定のフィールドを抽出

Incompatible types. 'duration' : TYPE_DOUBLE 'duration' : TYPE_INT64 

これを処理する最善の方法はわかりません。構造は

SELECT 
field1, 
field3 
[datasetName.tableA], 
UNION ALL 
SELECT 
field2, 
[datasetName.tableB], 

ようになるように、私はselect文に2つ目のレベルを追加することができますしかし、私は働いている実際のクエリは、はるかに複雑なこのおもちゃの例よりもあるので、それは、コードの可読性のために最適ではないのです。誰にも何か提案はありますか?あなたはUNION対JOINをやりたいほとんどの

おかげで、 ブラッド

+0

少なくとも私が見ている問題は、JOIN関連の概念を混ぜていることです(SELECT文で)UNION(FROMで)を指定します。あなたは入力と出力の具体的な例を提供して、助けてくれるチャンスがありますか –

答えて

1

(注:BigQueryのレガシーSQLで - コンマは、UNION ALLを意味する)

SELECT 
    t1.field1 AS field1, 
    t2.field2 AS field2, 
    t1.field3 AS field3 
FROM [datasetName.tableA] t1 
JOIN [datasetName.tableB] t2 
ON t1.somefield = t2.anotherfield 

以下のようなsomethigをお試しくださいsomefieldとanotherfieldをそれぞれのテーブルの実際のフィールドに置き換えてください。

+0

私はここで概念的に何か不足しているかもしれませんが、私は参加しようとしていません。私が達成したいのは、異なるテーブルから特定のフィールドを抽出することですが、それらのテーブルがお互いに特定の関係を持つようにする必要はありません。私ができることを可能にしたいのは、特定のテーブルから特定のフィールドを抽出することです。フィールド名は2つの異なるテーブルにまたがって複製されます。 –

+0

私は結合を使ってこれを達成することができましたが、JOINではなくUNION ALLを使用して積極的にしようとしていました。しかし、そうではないかもしれません。だから多分私がする必要があるだけです。 –

+0

あなたのケース/ロジックを特定の例でよりうまく提示できれば - これは役に立ちます:o) –

関連する問題