MySQL Query Update для нескольких таблиц - PullRequest
2 голосов
/ 24 декабря 2011

У меня есть система управления контактами и дамп sql моих контактов с пятью или шестью столбцами данных, которые я хочу импортировать в три конкретные таблицы.Интересно, как лучше это сделать.Я уже загрузил дамп sql ... теперь это единственная таблица в моей базе данных управления контактами.

Для таблиц в crm в таблице компаний требуется только contactID ... и в таблице песен:

  • companyID,
  • contactID,
  • дата добавления (не требуется) и
  • примечания (не требуется)

Затем есть третья таблица, таблица контактов, которая требует только имя контакта.

Я уже загрузил данные в каждую из трех таблиц (не уверен, правильно ли указан мой порядок в этом отношении), но теперь необходимо обновить и сопоставить данные в четвертой таблице (первоначально дамп sql) с другимитри и обновить все с его уникальным идентификатором.

Структуры таблиц:

+DUMP_CONTACTS

id <<< I dont need this ID, the IDs given to each row in the CRM are the important ones.

contact_name

company

year

event_name

event_description

====Destination Tables====

+++CONTACTS TABLE++

*contactID < primary key

*contact_name

+++COMPANIES TABLE+++

*companyID < primary key

*name

*contact_ID

*year

++++Events++++
*EventID < primary key

*companyID

*contactID

*eventname

*description

1 Ответ

0 голосов
/ 24 декабря 2011

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

-- Populate CONTACTS_TABLE with contact_name from uploaded dump
INSERT INTO CONTACTS_TABLE (contact_name)
SELECT contact_name FROM DUMP_CONTACTS

-- Populate COMPANIES with information from both CONTACTS_TABLE + dump
INSERT INTO COMPANIES (name, contact_ID, year)
SELECT d.company, c.contactID, d.year
FROM DUMP_CONTACTS AS d
    INNER JOIN CONTACTS_TABLE AS c
    ON d.contact_name = c.contact_name

-- Populate SONGS_TABLE with info from COMPANIES
INSERT INTO SONGS_TABLE (companyID, contactID)
SELECT cm.companyID, cm.contact_ID
FROM COMPANIES AS cm

-- Populate Events with info from COMPANIES + dump
INSERT INTO Events (companyID, contactID, eventname, description)
SELECT cm.companyID, cm.contact_ID, d.event_name, d.event_description
FROM DUMP_CONTACTS AS d
    INNER JOIN COMPANIES AS cm
    ON d.company = cm.name

Сначала я заполняю CONTACTS_TABLE, а затем, поскольку contactID требуется для записей в COMPANIES, вставьте записи из CONTACTS_TABLE, присоединяющиеся к дампу.SONGS_TABLE получает данные непосредственно из COMPANIES, и, наконец, Events получает свои данные, соединяя COMPANIES и дамп.

...