В настоящее время я выполняю миграцию блога Drupal в Wordpress на базе данных MySQL.
Я импортировал все свои сообщения, и в настоящее время я пытаюсь связать все мои изображения постов на drupal (расположенных в виджете story_image) с моими сообщениями в WordPress.
Когда я запускаю этот запрос:
UPDATE IGNORE wordpress.wp_posts p, drupal.content_field_story_image i, drupal.files f
SET p.post_content =
CONCAT(
f.filename, ' ', p.post_content
)
WHERE p.ID = i.nid
AND i.field_story_image_fid = f.fid
AND (
f.filename LIKE '%.jpg'
OR f.filename LIKE '%.jpeg'
OR f.filename LIKE '%.png'
OR f.filename LIKE '%.gif'
);
во всех моих постах WordPress стоит только одно из их изображений, хотя я хочу, чтобы он добавлял список всех из них.
Я немного разбираюсь в SQL-вещах и хотел бы знать, что будет означать добавление имени файла каждый раз, когда есть правильное совпадение, а не только один раз.
Вот упрощенная версия баз данных и таблиц, с которыми я работаю
DATABASE: wordpress
TABLE: wp_posts
id | post_content
------------------
1 | hello
DATABASE: drupal
TABLE: content_field_story_image
nid | field_story_image_fid
----------------------------
1 | 18
1 | 19
TABLE: files
fid | filename
---------------
18 | alpha.jpeg
19 | beta.jpeg
Ожидаемое post_content после обновления:
beta.jpeg alpha.jpeg hello
Фактический пост_контент после обновления:
alpha.jpeg hello
У меня, вероятно, даже не должно быть этого в ОБНОВЛЕНИИ ... SET для начала. Заранее спасибо за любые предложения.
ОБНОВЛЕНИЕ:
Благодаря предоставленным ответам я поиграл с GROUP_CONCAT
Теперь у меня есть этот запрос, который возвращает список изображений для каждого сообщения
SELECT GROUP_CONCAT(drupal.files.filename SEPARATOR ' ')
FROM wordpress.wp_posts , drupal.content_field_story_image, drupal.files
WHERE wordpress.wp_posts.ID = drupal.content_field_story_image.vid
AND drupal.content_field_story_image.field_story_image_fid = drupal.files.fid
AND (
drupal.files.filename LIKE '%.jpg'
OR drupal.files.filename LIKE '%.jpeg'
OR drupal.files.filename LIKE '%.png'
OR drupal.files.filename LIKE '%.gif'
)
GROUP BY wordpress.wp_posts.ID;
Теперь просто ищем способ вставить этот список в каждое сообщение WordPress.