2013-07-13 47 views
1

第一次在這裏..和PHP MySQL的新。MySQL:在一個表中插入多個表值

我正在嘗試將WordPress用戶數據轉移到另一個表以供一些自定義使用。這裏是我的表

我在找什麼可以在rc_users(最終結果)表中找到請參閱下面的鏈接圖像,因爲我在這裏是新的,無法發佈圖像。

http://i.stack.imgur.com/F1yEc.jpg

不知怎的,我設法插入來自wp_users表的價值,但現在越來越麻煩插入來自wp_usermeta表值。

此外,我想爲基礎,以wp_user_level轉換條件,所以如果用戶有10級別比它會轉換成100等..

這裏是我曾嘗試

// inserting user auth info     
"INSERT INTO rc_users 
(userid, name, password, email, created) 
SELECT ID, user_login, user_pass, user_email, user_registered 
FROM wp_users",  

// inserting user level info   
"INSERT INTO rc_users 
(role) 
SELECT meta_value 
FROM wp_usermeta 
WHERE user_id = userid 
AND meta_value = wp_user_level" 

非常感謝你的幫助..

+0

你想要插入所有的'meta_key'還是隻是特定的鍵? –

+0

我只想要wp_user_level,並且應該通過檢查userid來插入 – RDev

回答

0

你需要加入表wp_userwp_usermeta得到meta_value。由於元是由行而不是列保存的,因此您需要使用MAX()CASE()來樞轉結果。

INSERT INTO rc_users(userid, created, email, name, password, `role`) 
SELECT a.ID, a.user_registered, a.user_email, 
     a.user_login, a.user_pass, 
     MAX(CASE WHEN b.meta_key = 'wp_user_level' THEN meta_value END) role 
FROM wp_user a 
     INNER JOIN wp_usermeta b 
      ON a.ID = b.user_id 
GROUP BY a.ID, a.user_registered, a.user_email, 
      a.user_login, a.user_pass 

我不知道爲什麼角色的值是100,而不是10在你的屏幕截圖。

INSERT INTO rc_users(userid, created, email, name, password, `role`) 
SELECT a.ID, a.user_registered, a.user_email, 
     a.user_login, a.user_pass, 
     CASE MAX(CASE WHEN b.meta_key = 'wp_user_level' THEN meta_value END) 
       WHEN 10 THEN 100 
       WHEN 8 THEN 75 
       ELSE 0 
     END role 
FROM wp_user a 
     INNER JOIN wp_usermeta b 
      ON a.ID = b.user_id 
GROUP BY a.ID, a.user_registered, a.user_email, 
      a.user_login, a.user_pass 
+0

哇,這真是太神奇了..你能解釋一下我的知識嗎?另外我怎樣才能cahnge從10到100的user_level值?或我想要什麼? – RDev

+0

你的意思是乘以10得到100? 'MAX(CASE當b.meta_key ='wp_user_level'THEN meta_value END)* 100'? –

+0

實際上不是乘法。我有不同的角色值,例如,如果值是10,我需要更改爲100,如果它是8比75,等等。 – RDev

0

而不是使用第二插入查詢,你應該使用更新查詢

更新rc_users設定角色的=(SELECT meta_value FROM wp_usermeta其中USER_ID =用戶名和meta_value = 'wp_user_level');

+0

我明白了,這也是個不錯的主意。但不是JW的代碼更合適嗎?並進行優化?一切都在一個代碼中完成? – RDev