sql
  • firebird
  • firebird2.5
  • 2017-09-26 1 views 0 likes 
    0

    사용하고있는 테이블을 업데이트하고 싶지만 다른 테이블을 사용하여 올바른 필드를 가져와야합니다. 새 정보는 다른 테이블의 다른 필드에서 가져 오지 않습니다. "열 알 수없는 ASSEMBLYLINESOURCE.HEADERSYSUNIQUEID ..."참여를 사용하여 테이블 업데이트

    UPDATE PURCHASEHEADER SET PURCHASEHEADER.ORDERNOTES = 'Updated' 
    WHERE EXISTS (
        SELECT 1 FROM ASSEMBLYLINESOURCE 
        WHERE PURCHASEHEADER.ORDERNUMBER = ASSEMBLYLINESOURCE.PURCHASEORDERNUMBER 
    ) AND ASSEMBLYLINESOURCE.HEADERSYSUNIQUEID = 72637001 
    

    오류가 말을 반환 : 나는 다음과 같은 시도

    SELECT PURCHASEHEADER.ORDERNOTES 
    FROM PURCHASEHEADER, ASSEMBLYLINESOURCE 
    WHERE ASSEMBLYLINESOURCE.HEADERSYSUNIQUEID = 72637001 
        AND PURCHASEHEADER.ORDERNUMBER = ASSEMBLYLINESOURCE.PURCHASEORDERNUMBER 
    

    :

    다음 SQL 문은 올바른 정보를 반환 하지만 첫 번째 쿼리에서 작동하기 때문에 존재합니다.

    Mark Rotteveel (2017 년 7 월)에서 비슷한 게시물을 보았지만 여전히 작동하지 않습니다.

    +0

    소스를 포맷하지 않은 것 같습니다. 왜? 소스를 읽을 수있게 만들고 구조를 나타 내기 위해 15 초를 보냈습니다. 이제는 UPDATE 명령이 구조를 뒤집어서 외부의 테이블을 참조하고 내부의 외부 테이블 만 참조하는 것이 명확 해지지 않았습니까? –

    답변

    1

    닫는 괄호에 문제가 있습니다. 이거 해봐, 나에게 도움이 됐어.

    UPDATE PURCHASEHEADER set PURCHASEHEADER.ORDERNOTES = 'Updated' 
    WHERE EXISTS (SELECT 1 FROM ASSEMBLYLINESOURCE WHERE  
    PURCHASEHEADER.ORDERNUMBER = ASSEMBLYLINESOURCE.PURCHASEORDERNUMBER AND 
    ASSEMBLYLINESOURCE.HEADERSYSUNIQUEID = 72637001) 
    
    +0

    선택 1 부분은 무엇을 의미합니까? –

    +0

    @SimonKing 선택 1은 이미 귀하의 질문에 코드에 있습니다. 어쨌든, 발견 된 각 행에 대해 리터럴 값이 '1'인 열을 생성하는 것을 의미합니다. 'exists'는 값이 아닌 하나 이상의 행의 존재에 관심이 있습니다. –

    +0

    Yeh thats는 반환 된 행에 속하는 PURCHASEHEADER.ORDERNOTES 열을 수정하고 업데이트합니다. – Saj

    관련 문제