MySQL вставлять данные из нескольких запросов выбора - PullRequest
0 голосов
/ 01 апреля 2010

То, что у меня работает, и это то, что мне нужно улучшить:

INSERT form_data (id,data_id, email) 
SELECT '',fk_form_joiner_id AS data_id
     , value             AS email 
  FROM wp_contactform_submit_data 
 WHERE form_key='your-email'

Это просто получает электронные письма, теперь это здорово, но недостаточно, так как у меня есть несколько хороших значений form_key, которые мне нужно импортировать в разные столбцы, я знаю, что могу сделать это через php, используя циклы foreach и обновления, но это нужно сделать исключительно в MySQL.

Так как мне сделать что-то вроде: вставить данные формы (идентификатор, данные, адрес электронной почты, имя, фамилия и т. д.) Выберите [..], выберите [..] ....

Данные хранятся самым смешным из возможных способов в одной таблице, в ОДНОЙ КЛЕТКЕ, с другой ячейкой, показывающей фактические данные: http://drp.ly/Jhx3J (скриншот)

Пожалуйста, помогите

Ответы [ 2 ]

0 голосов
/ 02 апреля 2010

Это не проблема, вы просто должны присоединиться к wp_contactform_submit_data несколько раз (по одному для каждого значения):

INSERT INTO form_data (data_id, email, name)
SELECT fk_form_joiner_id as data_id, email, name
FROM (SELECT fk_form_joiner_id, value as email
      FROM wp_contactform_submit_data
      WHERE form_key='your-email'
      ) as emails
JOIN (SELECT fk_form_joiner_id, value as name
      FROM wp_contactform_submit_data
      WHERE form_key='your-name') as names
  USING (fk_form_joiner_id)
;
0 голосов
/ 01 апреля 2010

В вашем вопросе не очевидно, где хранятся другие нужные вам данные, но, возможно, вы ищете что-то вроде этого:

INSERT form_data (id,data_id, email,city) 
SELECT A.fk_form_joiner_id AS data_id
     , A.value             AS email 
     ,B.value               AS city
  FROM wp_contactform_submit_data A,
       wp_contactform_submit_data B
  WHERE A.form_key='your-email' AND 
        B.form_key='your-city' and
        A.fk_form_joiner_id=B.fk_form_joiner_id

Можно расширить эту логику для обработки небольшого числанесколько полей довольно легко - если одно или несколько значений данных иногда отсутствуют, вам нужно выполнить внешнее соединение между А и В., чтобы получить все записи.

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

Индекс wp_contactform_submit_data (fk_form_joiner_id, form_key) также сделает этот запрос довольно эффективным.

...