2011-12-06 2 views
2

CiviCRM의 이전 데이터 가져 오기가 더 유용한 (external_id) 필드 대신 사용자 정의 필드 (member_number)에 일부 멤버 번호를 배치했습니다.INNER JOIN이있는 표 사이에 INSERT INTO

내 (틀림없이 제한) SQL 기술은 너무 녹슨하지만 난 할 노력하고있어입니다 : external_id 필드가 비어

  1. 경우,
  2. contact_type
  3. "개인"입니다
  4. 일치하는 내부 ID 번호에 대해 member_number에서 external_id까지 데이터를 복사하십시오.

나는 다른 오류,이 몇 가지 변화를 시도했다 :

INSERT INTO test_table (external_id) 
SELECT member_number 
FROM member_info 
INNER JOIN test_table 
ON memberinfo.entity_id=test_table.id 
WHERE test_table.external_id IS NULL AND test_table.contact_type = "Individual" 

은 난 정말 INNER이에 가입해야하나요? 그리고 WHERE 문은 대개 삽입하려는 테이블이 아니라 가져 오는 테이블을 참조하지만이 작업을 수행하는 올바른 방법은 기억이 안납니다.

+0

test_table의 테이블 구조는 무엇입니까? 그리고 당신이 얻고있는 오류는 무엇입니까? – ysrb

+0

죄송합니다. test_table은 civicrm_contacts 테이블의 복제본으로 대부분 varchar 인 필드가 많이 있습니다. 오류는 다음과 같습니다 : # 1062 - 키 'UI_external_identifier'에 대한 중복 항목 '0' – briank

+0

Nevermind .... 나는 마침내 "중복 항목"을 참조했는데 NULL이 2의 "0"값으로 나타났습니다. . 왜 다른 오류가 발생했는지 모르겠지만 결국에는 작동하지 않습니다. 감사합니다 ... – briank

답변

2
update test_table 
set external_id = 
if(external_id = '' and contact_type = 'Individual', member_number,external_id) 
+0

이 트릭을하지 않았지만, 나는 단순함을 좋아합니다. 그리고 나는 이것이 올바른 길에 있음을 확신합니다. 여전히 오류가 발생합니다. "# 1054 - 'field list'에 알 수없는 'member_number'열이 있습니다." – briank