2012-03-30 67 views
2

我目前正在將一個Drupal博客遷移到Wordpress的MySQL數據庫上。mySQL命令來聚合匹配(Drupal到Wordpress遷移)

我已經導入我的所有職位,目前我想所有我的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 

實際POST_CONTENT:

alpha.jpeg hello 

我可能甚至不應該在UPDATE ... 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的帖子。

+0

我也有簡單的「UPDATE」試過這個,而不是「UPDATE忽略」,但無濟於事。 – 2012-03-30 07:18:18

回答

0

嘗試GROUP_CONCAT如下:

UPDATE IGNORE wordpress.wp_posts p, drupal.content_field_story_image i, drupal.files f 
SET p.post_content = 
CONCAT(
    group_concat(f.filename SEPARATOR ' '), ' ', 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' 
); 
+0

感謝您的快速回復!在運行查詢時,我得到「#1111 - 無效的組功能使用」 – 2012-03-30 07:47:56

+0

你必須在你的查詢中使用「Group By」子句,嘗試使用'group by p.post_content' – Vikram 2012-03-30 08:14:39

+0

hmm仍然不起作用。我想我不能在像這樣的SET中使用group_concat?也許? – 2012-03-30 08:16:27