Ich mache gerade eine Migration eines Drupal-Blogs zu Wordpress in einer MySQL-Datenbank.mySQL-Befehl zum Zusammenfassen von Übereinstimmungen (Drupal zur Wordpress-Migration)
Ich habe alle meine Posts importiert, und ich versuche derzeit, alle meine Drupal Post-Bilder (in einem story_image-Widget) zu meinen Wordpress-Posts zu verknüpfen.
Wenn ich diese Abfrage ausführen:
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'
);
alle meine Wordpress Beiträge vorangestellt sind mit genau einem ihrer Bilder, obwohl ich es möchte eine Liste aller von ihnen vorangestellt wird.
Ich bin ein bisschen rostig mit SQL-Sachen, und würde gerne wissen, was die Anweisung wäre, den Dateinamen jedes Mal anzuhängen, wenn es eine richtige Übereinstimmung gibt, und nicht nur einmal.
Hier ist eine vereinfachte Version der Datenbanken und Tabellen I mit
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
Erwartete POST_CONTENT nach dem Update arbeite:
beta.jpeg alpha.jpeg hello
Actual POST_CONTENT nach Update:
alpha.jpeg hello
I wahrscheinlich sollte es nicht einmal in einem UPDATE ... SET sein, um damit zu beginnen. Vielen Dank im Voraus für Anregungen.
UPDATES:
Dank der Antworten gegeben Ich habe mit GROUP_CONCAT
herumgespielt worden habe ich jetzt diese Abfrage, die eine Liste der Bilder für jede
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;
Post zurück Jetzt nur nach einer Möglichkeit suchend, diese Liste in jeden Wordpress-Beitrag einzufügen.
Ich habe auch dies mit einfach „UPDATE“ statt „UPDATE ignore“ versucht, aber ohne Erfolg. –