2011-09-19 7 views
0

테이블이 4 개 있습니다. 첫 번째 목록은 자원 봉사자 목록이고 두 번째 목록은 사이트이고 세 번째 목록은 프로젝트 목록입니다. 프로젝트 행은 자원자와 id가있는 사이트 및 섹터이라는 추가 열에 대한 참조 일뿐입니다.여러 테이블의 필드가 일치하는 MySQL 테이블의 필드를 업데이트하십시오.

세 테이블 모두 레거시이라는 네 번째 테이블에서 파생됩니다. 섹터이라는 열의 레거시 테이블의 각 행에서 필드를 가져 와서 섹터 열에 배치하고 프로젝트 테이블의 해당 행을 찾습니다. 프로젝트를 테이블을 업데이트 할 때 나는 기존 테이블에서 올바른 행을 알고하기 위해

, 나는 열을 일치 할 필요 FIRSTNAME자원 봉사자에서 LASTNAME 및 열 이름 , 지방 자치 단체지방기존에서의 해당 열 사이트 에서.

UPDATE projects, legacy 
    SET 
    projects.sector = legacy.sector,  
    WHERE (SUBQUERY CONTAINING COMPARISONS OF OTHER FEILDS IN OTHER TABLES SUCH AS 
     volunteers.firstname = legacy.firstname 
     volunteers.lastname = legacy.lasttname 
     sites.province= legacy.province 
     sites.municipality= legacy.municipality 
     sites.name= legacy.name) 

서브 쿼리는 무엇을해야 :

나는 내 쿼리의 모양은 생각?

+1

무엇이 질문입니까? – Ariel

답변

0

여기에 하위 쿼리를 원하지 않으면 조인을 원합니다.

나는 당신을 위해 그것을 쓸 것이지만 당신은 당신의 테이블을 보여주지 않으므로 나는 할 수 없다.

기본적으로 가장 먼저해야 할 일은 SELECT에 모든 항목을 올바르게 연결하는 표를 작성하는 것입니다. 일단 당신이해야 할 일은 UPDATE으로 바꾸면됩니다.

0
UPDATE projects 
    SET sector = legacy.sector 
FROM legacy 
INNER JOIN sites ON sites.province = legacy.province AND/OR 
     sites.municipality = legacy.municipality AND/OR 
     sites.name = legacy.name 
INNER JOIN volunteers ON volunteers.firstname = legacy.firstname AND/OR 
     volunteers.lastname = legacy.lasttname 
관련 문제