我有三个表,currency_types
,userdb
和user_currency
。
userdb
包含货币字段(gold
,sapphires
,amethysts
,garnets
和pkeys
)。我想将这些货币字段中的数据移动到user_currency
表中。但user_currency
表包含字段currency_id
和value
字段。 currency_id
字段与currency
类型.
id`字段相关。
我认为我可以通过为每种货币制作while
循环来实现这一目标,但我无法想到如何完成它并且必须有更好的方法来实现它我只是没有看到
我知道mysql_*
已被弃用。该网站正在重新编码以使用MySQLi,因此没有必要提及它。
currency_types
表:
SQL query: SELECT * FROM `currency_types` LIMIT 0, 25 ;
id name
1 Gold
2 Sapphires
3 Amethysts
4 Garnets
5 Keys
6 F. Stones
7 Silk
8 Leather
9 Copper
10 Cotton
11 Iron
12 Potions
13 Silver
14 Brass
15 Steel
16 Adamantine
user_currency
表:
SQL query: SELECT * FROM `user_currency` LIMIT 0, 25 ;
id user_id currency_id value
userdb
表:
SQL query: SELECT `id`, `gold`, `sapphires`, `amethysts`, `garnets`, `pkeys` FROM `userdb` WHERE `id`=1 LIMIT 0, 25 ;
id gold sapphires amethysts garnets pkeys
1 301518 1370 946 82 272
PHP:(无法弄清楚如何获取currency_id
字段)
$gold_query=mysql_query('SELECT `id`, `gold` FROM `userdb`');
while($gold=mysql_fetch_array($gold_query))
{
mysql_query('INSERT INTO `user_currency` (`user_id`, `currency_id`, `value`)
SELECT `id`, `gold`
FROM `userdb`
WHERE `id`='.$user['id']);
}
答案 0 :(得分:1)
一次性镜头,没有PHP循环或PHP,从mysql GUI或诸如此类的东西运行。
如果你想要值为0的那些,请删除每个的where子句。
INSERT INTO `user_currency` (`user_id`, `currency_id`, `value`)
select id,'gold',gold from userdb where gold<>0;
INSERT INTO `user_currency` (`user_id`, `currency_id`, `value`)
select id,'sapphires',sapphires from userdb where sapphires<>0;
INSERT INTO `user_currency` (`user_id`, `currency_id`, `value`)
select id,'amethysts',amethysts from userdb where amethysts<>0;
INSERT INTO `user_currency` (`user_id`, `currency_id`, `value`)
select id,'garnets',garnets from userdb where garnets<>0;
INSERT INTO `user_currency` (`user_id`, `currency_id`, `value`)
select id,'pkeys',pkeys from userdb where pkeys<>0;
假设user_currency.id是auto_inc,因此未在insert stmt中提供。