2013-12-16 5 views
0

나는 mysql으로 가져온 하나의 테이블을 가지고있다.mysql은 하나의 테이블에서 여러 개의 테이블을 생성한다.

이제 관련 테이블을 여러 개 만들어야합니다.

그래서 기본적으로 나는 현재 내가 마지막 인서트를 얻을 수 있기 때문에 last_insert_id 아마 증가 결코 사용 다음

start transaction; 

Insert into Address (AddressLine1, AddressLine2, Town, County, Postcode) 
Select Distinct Address_line_1, Address_Line_2, Town, County, Postcode from Import; 

set addressLastId = last_insert_id(); 

INSERT INTO Organisation (Name, AddressID) 
SELECT DISTINCT Supplier_Name, addressLastId FROM Import; 

commit; 

두 번째 부분을 가지고있다.

그래서 나는 주소 테이블에 삽입 된 각 행에 대해 이전 ID를 얻는 방법을 연습해야합니까?

주소 삽입 내부 루프가 있어야합니까?

건배

답변

0

당신은 두 번째 삽입을 위해 가입 사용할 수 있습니다 - 주소 가져 오기를 가입 및 조직에 각에서 필요한 필드를 삽입합니다.

각 레코드를 순차적으로 처리하는 경우에만 마지막 삽입 ID 가져 오기가 작동합니다.

+0

건배. 그렇다면 고유 한 ID가 없으므로 올바른 주소를 조직에 어떻게 일치시킬 수 있습니까? – tjhack

+0

주소로 가져온 네 개의 필드 (주소 : Address_1, Address_Line_2, Town, County)에 가입하고 주소에서도 ID를 반환합니다. 중복이있는 경우 왼쪽 결합을 사용하고 고유를 선택해야 할 수도 있습니다. –

+0

회사에 삽입해야하는 모든 정보를 얻을 수 있도록 조인 된 테이블을 먼저 만들어보고 중단 된 경우 쿼리를 게시하십시오. –

1

나는 Tim에 동의합니다. 주소를 채운 후에는 그냥 실행할 수 있습니다

INSERT INTO Organisation (Name, AddressID) 
SELECT DISTINCT Import.Supplier_Name, Address.id 
FROM Import INNER JOIN Address ON (set all the address lines and city etc =, since Im guessing there wasnt an address ID in the original import) 
관련 문제