INSERT INTO между таблицами с INNER JOIN - PullRequest
2 голосов
/ 07 декабря 2011

При более раннем импорте данных в CiviCRM некоторые номера участников помещались в пользовательское поле (member_number) вместо более полезного (external_id) поля.

Мои (по общему признанию ограниченные) навыки работы с SQL слишком хороширжавый, но я пытаюсь сделать следующее:

  1. ЕСЛИ external_id поле пустое,
  2. И contact_type - "Индивидуальный"
  3. Затем скопируйте данные из 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"

Мне действительно нужно ВНУТРЕННЕЕ СОЕДИНЕНИЕ по этому вопросу?И я знаю, что утверждение WHERE обычно относится к таблице, из которой вы тянете, а не к той, в которую вы вставляете, но я не могу вспомнить, как правильно это сделать.

1 Ответ

2 голосов
/ 07 декабря 2011
update test_table
set external_id = 
if(external_id = '' and contact_type = 'Individual', member_number,external_id)
...