2011-09-28 3 views
0

두 테이블의 특성을 한 테이블에로드하려고합니다.두 테이블의 특정 특성을 다른 테이블로로드하는 방법은 무엇입니까?

Id City  State  Country 
=============================== 
1 New York New York USA 
2 Portland Oregon USA 
3 Tokyo  Honshu Japan 

그리고 사용자 테이블 :

Id First_Name Last_Name Hometown_City Hometown_State Hometown_Country 
=========================================================================== 
1 Brett  Burr  New York  New York  USA 
2 Bucky  Beaver  Portland  Oregon   USA 
3 Ranma  Saotome Tokyo   Honshu   Japan 

내가 대신 별도의 Hometown 필드를 포함하는의, A가 들어 사용자를위한 새로운 테이블을 만드는거야

가 나는 위치 테이블이 Hometown_Id 외래 키입니다. 같은

뭔가 : 새로운 사용자 테이블에 데이터를 삽입 할 때

Id First_Name Last_Name Hometown_Id 
======================================== 
1 Brett  Burr  1 
2 Bucky  Beaver  2 
3 Ranma  Saotome 3 

는 그러나, 나는 구문에 문제가 있어요.

나는 같은 명령으로 쉽게 비 위치 기반 필드를 삽입 할 수 있습니다 그러나

INSERT INTO newusers (Id, First_Name, Last_Name) 
SELECT DISTINCT Id, First_Name, Last_Name 
FROM users 

, 나는 위치 테이블에서 값을 추가 한 다음에 올바른 구문의 확실하지 않다

+0

(도시, 주, 국가)의 두 테이블을 조인하고 싶을 것입니다. –

+0

무슨 뜻인지 좀 더 자세히 설명해 주시겠습니까? 어느 두 테이블에 가입해야하며, 그 결과는 무엇입니까? –

+0

나는 당신이 "속성"을 의미한다고 생각하지 않는다, 나는 당신이 데이터를 의미한다고 생각한다. 테이블의 속성은 가지고있는 컬럼의 수입니다. –

답변

0

INSERT INTO newusers (Id, First_Name, Last_Name, Hometown_Id) 
SELECT users.Id, users.First_Name, users.Last_Name, locations.Id 
FROM users 
INNER JOIN locations 
ON locations.City = users.Hometown_City 
AND locations.State = users.Hometown_State 
AND locations.Country = users.Hometown_Country 

을 더 t이있는 경우 : 적절한 제약을 가지고 있고, Location 테이블의 고유 항목이 포함되어 있는지, 다음과 같은 코드를 사용할 수 있다고 가정하면 한 번 필요한 위치 (예 : '현재 거주'항목), 별칭을 사용하고 locations 테이블 (users)에 다시 연결합니다.

+0

미안하지만 난 Hometown_Id'가없는'때문에 이 테이블 중 하나가 –

+0

@ByungkuneChoi을 Hometown_Id 없다는 오류 얻을 - 당신이 알 수 있다면, 귀하의 질문에 편집을 무슨 일이 일어나고 있는지 더 명확히하기 위해 (쿼리의 형식을 지정하고 나열한 열의 수를 줄이면 - '고향'과 '현재'는 기본적으로 같은 생각이었습니다). 실제 테이블 구조가 무엇인지에 맞게 쿼리를 수정해야합니다. 마음을 잡고, 이것은 좋은 학습 기회입니다! – Sathya

+0

@ByungkuneChoi 언급에 가능성 잘못된 식별자 –

관련 문제