2017-03-22 6 views
3

文書IDが_idのCloudantにデータベースがあります。dashDBテーブルから_idという名前の列を使用するにはどうすればよいですか?

このデータをCloudantからdashDBに複製した後、この_idカラムを使用して結合したい2つのテーブルがあります。 Run SQLでは以下を試しましたが、これは実行されません。私はここで何が欠けていますか?カラム名_idをアンダースコアなしのものに置き換える必要がありますか?

select m.title, m.year, g.value 
from MOVIES m 
inner join MOVIES_GENRE g on m._ID = g._ID; 
+0

あなたは、特定のエラーを受信して​​いますか?カラム名が '_id'であると思われる場合は、それを囲むように二重引用符を入れてオブジェクト名であることを示すことができます:'内部結合MOVIES_GENRE g on m。 "_ ID" = g。 "_ ID"; 'Ifこれらの列の名前をより標準的な形式に変更することをお勧めします。 – gmiley

答えて

4

TL; DR:@gmiley問題を指摘するように、通常の識別子ではない_ID列名によって引き起こされる(以下の定義を参照)、したがって、二重引用符で囲む"_ID"する必要があるか、さあなたのSQL文では一重引用符'_ID'

select m.title, m.year, g.value 
from MOVIES m 
inner join MOVIES_GENRE g on m."_ID" = g."_ID"; 

通常の識別子とは異なり引用識別子は、ケース(titleTITLEと同一であるのに対し、"_id""_ID"と同一ではない)敏感です。文中に"_id"と指定すると、列が見つからないことを示すエラーが表示されます。

Cloudant warehousing processを使用してDashDBテーブルを作成したと述べたので、スキーマの検出中にDDLが生成されたときに、プロパティ名が大文字であると言えるでしょう。

例:この構造

{ 
    "_id": "000018723bdb4f2b06f830f676cfafd6", 
    "_rev": "1-91f98642f125315b929be5b5436530e7", 
    "date_received": "2016-12-04T17:46:47.090Z", 
    ... 
} 

とJSON文書の内容は、3つの列にマッピングされますタイプの

  • _IDVARCHAR(...)タイプの
  • _REVVARCHAR(...)
  • DATE_RECEIVEDのタイプ...
  • ...

これが役立ちます。 DB2 SQL referenceから


通常識別子は大文字、数字、または下線文字であり、その各々は、ゼロ以上の文字が続く大文字です。小文字は通常の識別子を指定するときに使用できますが、処理時には大文字に変換されます。通常の識別子は予約語であってはなりません。

例:WKLYSALWKLY_SAL

区切り識別子が 二重引用符で囲まれた一つ以上の文字のシーケンスです。シーケンス中の先頭の空白は重要です。 シーケンス内の末尾ブランクは、識別子とともに に格納されていますが、重要ではありません。 2つの連続した引用符は、区切られた識別子内に1つの引用符を で表すために使用されます。このように、識別子 には、小文字を含めることができます。

例: "WKLY_SAL""WKLY SAL""UNION""wkly_sal"

関連する問題