将user_table中的数据插入currency_table

时间:2015-08-16 19:08:37

标签: php mysql

我有三个表,currency_typesuserdbuser_currency

userdb包含货币字段(goldsapphiresamethystsgarnetspkeys)。我想将这些货币字段中的数据移动到user_currency表中。但user_currency表包含字段currency_idvalue字段。 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']);
}

1 个答案:

答案 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中提供。