"잘못된 작업"오류가 발생하는 Microsoft Access 왼쪽 조인 쿼리


0

질문은 다음과 같습니다. LEFT JOIN쿼리 에서 "잘못된 작업"오류가 발생 하지만 문제를 일으키는 필드를 식별 할 수 있다고 생각하지만 문제 를 해결하기 위해 , 어떻게해야하는지 수 없습니다 . 내가 잃어버린 것 / 작동하려면 무엇이 바뀌어야합니까?


2 개의 다른 선택 쿼리 ( ex_Step1ex_Step2) 로 들어가는 4 개의 연결된 테이블로 작업 한 다음이 2 개의 쿼리는 세 번째 쿼리 ( ex_Step3)로 이동합니다. 세 번째 쿼리를 실행하려고하면 "잘못된 작업"오류가 발생합니다. 다음과 같은 경우를 제외하고 원본 데이터를 수정하지 않습니다.

  • Switch 사람이 읽을 수 있도록 시스템 생성 코드에서 프로젝트 이름으로 변환
  • Sum 서로 다른 두 숫자를 더하기 위해
  • Trim 작업 주문 번호에서 후행 공백을 제거하는 방법

다음은 쿼리가 수행해야하는 작업에 대한 설명입니다.

  • 우리는 NCR (부적합 기록)을 가지고있어 문제가 무엇이든 수정하거나 수리 또는 재 작업 활동을 수행하기 위해 WO (작업 ​​순서)를 만들 수 있습니다
  • 모든 NCR이 WO를 생성하는 것은 아니며 NCR이 모든 WO를 생성하는 것은 아닙니다.
  • NCR 테이블에는 WO가 작성된 경우에 대한 필드와 NCR에 대한 기타 정보가 있습니다.
  • WO 테이블에는 작업을 수행하는 데 소요 된 모든 시간에 대한 기록이 있지만 NCR 번호가 작성된 필드는 없습니다.
  • WO 번호를 기준으로 NCR 데이터와 WO 데이터를 연결해야합니다.
  • NCR에서 만든 각 WO의 모든 시간을 추출하여 NCR이 닫힌 날짜에 연결하고 싶습니다.
  • ex_Step1모든에 대한 데이터를 추출하여 그 번호로 시작 WO N모든가 NCR 만든 WO부터 시작하는 수를 가져옵니다N
  • ex_Step2 로 시작하는 작업 지시에 연결된 모든 NCR에 대한 데이터를 추출합니다. N
  • ex_Step3되어 가정 에서 모든 레코드에 끌어 ex_Step1WO 번호가 나타나는 경우, 그리고 ex_Step2, 그것은 번호, 만든 날짜와 같은 NCR 정보에 끌어해야하고, 날짜는 폐쇄
  • WO로 시작 N하고 NCR 테이블에 해당 항목이없는 경우 DATE_MC필드 를 사용할 계획 ex_Step1이지만 아직 문제가 될만큼 충분히 얻지 못했습니다.

지금까지 내가 한 문제 해결과 몇 가지지지하는 생각을 바탕으로 내가 알아 낸 것들이 있습니다.

  • 왼쪽 ex_Step3LEFT JOINwith ex_Step1를 사용할 때만 오류가 발생합니다 . 정기 조인은 문제 ex_Step2가 없으며 왼쪽 의 조인 은 문제가 없습니다.
  • JOIN필드 ex_Step1.tWO_NBRex_Step2.tWO_NK있습니다. (두 개의 기본 연결 테이블은 동일한 데이터에 대해 다른 이름을 가짐)
  • 한 테이블에는 후행 공백이 있고 다른 테이블에는 공백이 없으므로 조인은 공백이 제거 된 상태이므로 조인 된 두 필드는 Trim(in ex_Step1ex_Step2) 필드에 적용 됩니다.
  • a를 사용 LEFT JOIN하지만 오른쪽 테이블 ( ex_Step2)의 레코드를 포함 ex_Step3하지 않으면 오류없이 실행됩니다. 왼쪽 테이블에서 데이터 만 가져 오기 때문에 조인을 무시하기 때문입니다.
  • ON아래 SQL에 표시된 것처럼 명령문을 괄호로 묶으 려고했지만 효과가 없습니다.

다음은 쿼리에 대한 SQL입니다. 프로젝트 이름을 제거하기 위해 데이터를 삭제했지만 다른 변경 사항은 없습니다. 의 경우 ex_Step1:

SELECT WDS17_ORD.STKRM, Switch([STKRM]="14","Proj1",[STKRM]="16","Proj2",[STKRM]="26","Proj3",[STKRM]="28","Proj4") AS Project, Trim([WO_NBR]) AS tWO_NBR, WDS17_LDD.WO_ACCT, WDS17_ORD.DATE_MC, Sum([WDS17_LDD]![HRS_REG]+[WDS17_LDD]![HRS_OT1]) AS Hours
FROM WDS17_LDD RIGHT JOIN WDS17_ORD ON WDS17_LDD.WO_ACCT = WDS17_ORD.WO_NBR
GROUP BY WDS17_ORD.STKRM, Switch([STKRM]="14","Proj1",[STKRM]="16","Proj2",[STKRM]="26","Proj3",[STKRM]="28","Proj4"), Trim([WO_NBR]), WDS17_LDD.WO_ACCT, WDS17_ORD.DATE_MC
HAVING (((WDS17_ORD.STKRM)="14" Or (WDS17_ORD.STKRM)="16" Or (WDS17_ORD.STKRM)="26" Or (WDS17_ORD.STKRM)="28") AND ((Trim([WO_NBR])) Like "N*") AND ((Sum([WDS17_LDD]![HRS_REG]+[WDS17_LDD]![HRS_OT1]))>0))
ORDER BY Switch([STKRM]="14","Proj1",[STKRM]="16","Proj2",[STKRM]="26","Proj3",[STKRM]="28","Proj4"), WDS17_ORD.DATE_MC DESC , Sum([WDS17_LDD]![HRS_REG]+[WDS17_LDD]![HRS_OT1]) DESC;

... 그리고 ex_Step2:

SELECT Trim([REWORK_WO_NK]) AS tWO_NK, DW_OWNER_NCM_DISP_REWORK_WO_FACT.NCR_NUMBER_NK AS NCR_NUMBER, DW_OWNER_NCM_NCR.DATE_CREATE, DW_OWNER_NCM_NCR.DATE_CLOSE
FROM DW_OWNER_NCM_DISP_REWORK_WO_FACT INNER JOIN DW_OWNER_NCM_NCR ON DW_OWNER_NCM_DISP_REWORK_WO_FACT.NCM_NCR_SK = DW_OWNER_NCM_NCR.NCM_NCR_SK
GROUP BY Trim([REWORK_WO_NK]), DW_OWNER_NCM_DISP_REWORK_WO_FACT.NCR_NUMBER_NK, DW_OWNER_NCM_NCR.DATE_CREATE, DW_OWNER_NCM_NCR.DATE_CLOSE
HAVING (((Trim([REWORK_WO_NK])) Like "N*"))
ORDER BY DW_OWNER_NCM_NCR.DATE_CREATE, DW_OWNER_NCM_NCR.DATE_CLOSE;

... 그리고 ex_Step3:

SELECT ex_Step1.STKRM, ex_Step1.Project, ex_Step1.tWO_NBR, ex_Step1.WO_ACCT, ex_Step1.DATE_MC, ex_Step1.Hours, ex_Step2.NCR_NUMBER, ex_Step2.DATE_CREATE, ex_Step2.DATE_CLOSE
FROM ex_Step1 LEFT JOIN ex_Step2 ON (ex_Step1.tWO_NBR = ex_Step2.tWO_NK);

여기에 생각이 있습니다. NBR 번호 만 WO 번호에 결합하는 조회를 작성하십시오. 완전 외부 조인을 사용하면 두 테이블 (왼쪽 및 오른쪽 조인 모두)의 모든 데이터를 쿼리 결과 테이블로 가져올 수 있습니다. 거기에서 세 테이블을 모두 연결하고 필요한 정보를 가져옵니다.
wbeard52

완전한 외부 조인을 사용한 적이 없습니다. SQL 지식이 Access로 제한되어 있지만 가짜 방법을 찾았습니다. 몇 가지 다른 시도로 같은 오류가 발생했습니다. 그러나 해결 방법을 찾도록 영감을주었습니다. 내 응용 프로그램의 경우 처음 두 쿼리가 테이블 만들기이고 세 번째 쿼리가 두 쿼리를 결합하는 것이 좋습니다. 그것은 매력적이었습니다. ---이 질문을 닫고 영감을 주겠습니다. 삭제가 내가 가진 유일한 경로입니까? 지금 스스로 답변하는 방법을 모르겠습니다.
엔지니어 토스트

답변:


0

이 질문은 미래 세대를위한 참고 자료가 될 수 있도록 질문을 공개하고 답을 남기지 않도록하기 위해 게시 된 답변입니다.


의견에서 제안한 것처럼 완전 외부 조인을 시도했지만 작동하지 못했습니다. Access 2010에서는 기본적으로 구현되지 않았으며 찾은 해결 방법이 실패했습니다. 최종 솔루션은 기본 쿼리를 테이블 만들기 쿼리로 설정하고 테이블을 세 번째 쿼리의 소스로 사용하는 것이 었습니다. 내 구현에는 충분했습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.