2014-10-16 3 views
0

이 문제를 해결할 수 있는지 궁금합니다. 당신은 당신이 내가 여기에 쓴 것과 같은 스크립트를 사용하십시오 가입과 INSERT를 실행하려면 일반적으로 경우필드 목록의 'D1'열이

... 여기

INSERT INTO products_BU (`d1`) 
     SELECT `D1` 
     FROM new_dimensions_BU 
     LEFT JOIN new_dimensions_BU AS ud 
     ON products_BU.size_code = ud.SIZE_CODE 

이 수수께끼의는 products_BU에서 어떤 필드가 없음 단지 D1인데, 그 열에 별칭을 사용하는 것이 간단 할지라도. 별칭 ud.D1을 사용하면 'on clause'에 'products_BU.size_code'라는 알 수없는 열이 표시된다는 점에서 또 다른 문제가 발생합니다. 정확히 'size_code'라는 것을 알 수 있습니다.

별칭을 제거하면 다시 모호한 열이 나타나므로 별칭을 제거해도 작동하지 않습니다.

누군가 이런 오류가 발생하는 이유에 대해 설명해 줄 수 있습니까? 이 같은 쿼리가있을 때

+0

* 정확히 일치하는 필드가 없습니다. *, 어떻게 할 수 있습니까? INSERT INTO products_BU (d1)'을 (를) 사용 중이므로 'd1' **이 (가) ** 테이블에 존재해야합니다 ** – Lamak

+0

예 틀림없이 그들은 'D1'에있는 수도 때문에 다르다. 비록 그들이 동일하고 별칭을 사용했다 할지라도 그것은 여전히 ​​실패합니다. –

+0

당신은이 조인 술어 -'products_BU.size_code = ud.SIZE_CODE'를 가지고 있습니다 - 그러나'products_BU'는 선택 목록에 나타나지 않습니다, 그래서 당신은 알 수없는 열 오류를 얻습니다. 나는 당신이'new_dimensions_BU.size_code = ud.SIZE_CODE'를 원한다고 생각합니다. – GarethD

답변

0

는 :

insert into table2 
(field1, field2, etc) 
select query goes here 

셀렉트 쿼리는 그 자체에 성공적으로 실행 할 수 있어야한다.

이 코드를 보면 : 당신은 그것을에 가입하지 않고 제품 테이블을 참조하려고

FROM new_dimensions_BU 
LEFT JOIN new_dimensions_BU AS ud 
ON products_BU.size_code = ud.SIZE_CODE 

.

관련 문제