2017-03-22 17 views
3

문서 ID가 _id 인 Cloudant에 데이터베이스가 있습니다.dashDB 테이블의 _id 열을 어떻게 사용할 수 있습니까?

이 데이터를 Cloudant에서 dashDB로 복제 한 후이 _id 열을 사용하여 결합하려는 두 개의 별도 테이블이 있습니다. 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'라고 생각되면, 그 주위에 큰 따옴표를 넣어 객체 이름임을 나타낼 수 있습니다 :'내부 join MOVIES_GENRE g on m. "_ ID"= g. "_ ID";'If 가능한 경우 해당 열의 이름을 표준 형식으로 변경하는 것이 좋습니다. – gmiley

답변

4

TL; DR는 : @gmiley 문제가 일반 ID하지 않은 _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"을 지정하면 해당 열을 찾을 수 없다는 오류가 발생합니다.

DashDB 테이블을 채우는 데 Cloudant warehousing process을 사용했다고 언급 했으므로 스키마를 검색하는 동안 DDL이 생성 될 때 속성 이름이 대문자임을 언급 할 가치가 있습니다.

예 :이 구조

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

와 JSON 문서의 내용은 세 컬럼에 매핑 될 것이다 : 타입

  • _IDVARCHAR(...)
  • _REVVARCHAR(...)
  • DATE_RECEIVED의 유형 ...
  • ...

희망이 있습니다. DB2 SQL reference 가입일


:

일반 ID가 대문자, 숫자 또는 밑줄 문자 인 각각 0 이상의 문자 뒤에 대문자이다. 소문자는 일반 식별자를 지정할 때 사용할 수 있지만 처리 할 때 대문자로 변환됩니다. 일반 식별자는 예약어가 아니어야합니다.

예 : WKLYSALWKLY_SAL

식별자가 따옴표로 둘러싸인 하나 개 이상의 일련의 문자 구분. 연속되는 공백은 중요합니다. 식별자에 이 저장되어 있지만 시퀀스의 후미 공백은 중요하지 않습니다. 두 개의 연속 된 따옴표는 구분 된 식별자 내에 하나의 인용 부호를 나타 내기 위해 사용됩니다 ( ). 이런 방식으로 식별자 은 소문자를 포함 할 수 있습니다.

예 : "WKLY_SAL""WKLY SAL""UNION""wkly_sal"