2011-01-28 11 views
0

Crystal Reports 파일에 필요한 DB2 SQL 쿼리가 있습니다. 데이터베이스 전문가 내에서 명령 추가를 통해 다음과 같이 내 쿼리는 간다 : 그것은 기본 DB2 데이터 센터에 대한 쿼리를 확인하려고 할 때 나는 데이터베이스 전문가에서 얻을은 Crystal Reports 오류 메시지가 이것과 DB2 : 세부 정보 : 42S22 : [IBM] [CLI 드라이버] [DB2] SQL0206N {colname}이 (가) 사용 된 컨텍스트에서 유효하지 않습니다.

select "V_SIA_HIST_UTIL"."ID_HISTQ_UTILT_GIA" 
     , "V_SIA_HIST_UTIL"."PRENM_UTILT_GIA" 
     , "V_SIA_HIST_UTIL"."NM_UTILT_GIA" 
     , "V_SIA_HIST_UTIL"."CD_UTILT_GIA" 
     , "V_SIA_HIST_UTIL"."DH_DERNI_MODIF_UTILT_GIA" 
     , "V_SIA_HIST_UTIL"."ID_HIST_UTILT_GIA_PAREN" 
     , "pag"."nom_type" 
     , "pag"."nom" 
     , "pag"."description" 
     , "pag"."nom_affiche" 
     , "pag"."tri" 
     , "pag"."id_utilisateur" 
from "TEST"."V_SIA_HIST_UTIL" 
    full outer join (
     select "p"."nom_type" 
        , "p"."nom" 
        , "p"."description" 
        , "p"."nom_affiche" 
        , "p"."tri" 
        , "p"."id_utilisateur" 
      from (
       select 'p' as "nom_type" 
          , "V_SIA_HST_ROL_SECU"."NM_ROLE_SECUR_GIA" as "nom" 
          , CAST(NULL AS VARCHAR(128)) as "description" 
          , CAST(NULL AS VARCHAR(128)) as "nom_affiche" 
          , 0 as "tri" 
          , "V_SIA_JC_ROLS_UTIL"."ID_HISTQ_UTILT_GIA" as "id_utilisateur" 
        from "TEST"."V_SIA_HST_ROL_SECU" 
         inner join "TEST"."V_SIA_JC_ROLS_UTIL" on "V_SIA_JC_ROLS_UTIL"."ID_HISTQ_ROLE_SECUR_GIA" = "V_SIA_HST_ROL_SECU"."ID_HISTQ_ROLE_SECUR_GIA" 
       union 
       select 'a' as "nom_type" 
          , "V_SIA_HST_ASG_RESS"."NM_ASSGN_RESRC_GIA" as "nom" 
          , "V_SIA_HST_ASG_RESS"."DESCN_ASSGN_RESRC_GIA" as "description" 
          , "V_SIA_HST_ASG_RESS"."NM_AFFIC_ASSGN_GIA" as "nom_affiche" 
          , 1 as "tri" 
          , "V_SIA_JC_ASSG_UTIL"."ID_HISTQ_UTILT_GIA" as "id_utilisateur" 
        from "TEST"."V_SIA_HST_ASG_RESS" 
         inner join "TEST"."V_SIA_JC_ASSG_UTIL" on "V_SIA_JC_ASSG_UTIL"."ID_HIST_ASSGN_RESRC_GIA" = "V_SIA_HST_ASG_RESS"."ID_HIST_ASSGN_RESRC_GIA" 
       union 
       select 'g' as "nom_type" 
          , "V_SIA_HST_GRP_SECU"."NM_GROUP_SECUR_GIA" as "nom" 
          , CAST(NULL AS VARCHAR(128)) as "description" 
          , CAST(NULL AS VARCHAR(128)) as "nom_affiche" 
          , 2 as "tri" 
          , "V_SIA_JC_GRPS_UTIL"."ID_HISTQ_UTILT_GIA" as "id_utilisateur" 
        from "TEST"."V_SIA_HST_GRP_SECU" 
         inner join "TEST"."V_SIA_JC_GRPS_UTIL" on "V_SIA_JC_GRPS_UTIL"."ID_HISTQ_GROUP_SECUR_GIA" = "V_SIA_HST_GRP_SECU"."ID_HISTQ_GROUP_SECUR_GIA" 
      ) "p" 
    ) "pag" on "pag"."id_utilisateur" = "V_SIA_HIST_UTIL"."ID_HISTQ_UTILT_GIA" 

:

데이터를 검색하지 못했습니다 데이터베이스에서.
세부 사항 : 42S22 : [IBM] [CLI 드라이버] [DB2] SQL0206N
"V_SIA_HST_ROL_SECU.NM_ROLE_SECUR_GIA는"이 사용되는
컨텍스트에서 유효하지 않습니다. SQLSTATE = 42703
[데이터베이스 공급 업체 코드 : -206]

나는이 제안 원인 중 하나가 내 쿼리에 적용하지 보인다 언급하는 것을 잊었다. DB2 SQL-Error: -206 SQLState: 42703

같은 쿼리
방법이 문제를 해결하기에 관해서는 SQL 서버 2005

모든 단서에 대한 잘 실행? 이것은 DB2에 대한 저의 첫 경험입니다. 저는 오늘 아침 DB2 Connect (DB2 Connect)를 설치했습니다.

미리 감사드립니다. =)

답변

1

두 플랫폼 모두에서 쿼리가 동일 함을 입증하십시오. 'diff'는 당신의 친구입니다.

동일한 경우 해당 열이 실제로 "TEST"테이블에 있습니다. "V_SIA_HST_ROL_SECU"? 그렇지 않은 경우 오류가 발생합니다.

쿼리가 다른 플랫폼에서 (또는 다른 데이터베이스에서도) 제대로 작동한다는 사실은 아마 두 데이터베이스간에 다른 것이 있다는 것을 의미합니다. 여기에서 오류는 구조의 차이 일 수 있음을 나타냅니다.

그런 다음 해당 열과 다른 "nom"열을 제거하려고합니다. 오류 메시지에 이름 지정된 해당 열이 없으면 조회가 수행하는 내용을보십시오. 아이디어는 쿼리가 작동 할 때까지 한 번에 한 조각 씩 단순화 (단축)하는 것입니다. (또는 거의 아무것도 시작하지 않고 한 번에 한 조각 씩 쿼리를 작성합니다.)

+0

네, 맞습니다. 방금 확인 했으므로 확인했습니다. 귀하의 의견을 보내 주셔서 감사합니다. =) –

+0

2 개의 쿼리가 동일하다는 것을 증명할 수 있도록 내 대답을 편집했습니다. 두 플랫폼을 비교할 때 가장 먼저해야 할 일입니다. –

+0

+1 연습 솔루션 용. 이 접근 방식은 한 번 이상 가치있는 것으로 입증되었습니다! 나는 내가 어떻게 생각하지 않았는지를 이해할 수 없다. = \ 감사! 나는 이것을 시도 할 것이다. –