带动态内容的MySQL Update查询

时间:2011-04-30 06:26:24

标签: mysql

在MySQL中,我有两个表:

CATEGORY

----------------------------------------------
| category_name      | category_code         |
----------------------------------------------
| Suit               | SU                    |
| Western            | WE                    |
----------------------------------------------

产品

---------------------------------------------
| name             | Category     | code    |
---------------------------------------------
| xyz1             | Suit         |         |
| abc1             | Suit         |         |
| abc2             | Western      |         |
---------------------------------------------

我想更新PRODUCT中的代码,以便在更新后它会:

产品

---------------------------------------------
| name             | Category     | code    |
---------------------------------------------
| xyz1             | Suit         | SU/0001 |
| abc1             | Suit         | SU/0002 |
| abc2             | Western      | WE/0001 |
---------------------------------------------

提前致谢

1 个答案:

答案 0 :(得分:0)

老实说,看起来您需要重构数据库。每个表都应该有一个自动递增的“id”字段。这将允许“类别”字段引用id而不是名称的副本(如果您决定更改该类别的拼写或名称)。甚至到你的命名 - 如果你的字段在类别表中,似乎没有必要在“代码”字段名称之前有“category_”......等等

除此之外,你可能正在谈论一个PHP脚本(或类似的东西) - 这将允许你重复每个项目并跟踪你添加了多少套装代码,这样你就可以增加你的“代码”字段(我假设这是0001 0002正在做的事情。

脱离我的头脑,它就是这样的(我相信它可以更精简/更好 - 但希望这给出了一种你可以做到的方式的想法:

$numSU = 0;
$numWE = 0;
$products = mysql_fetch_array(mysql_query("SELECT * FROM product"));
foreach($products as $p) {
    $codeQuery = mysql_query("SELECT category_code FROM category WHERE category_name='".$p['Category']."'");
    $code = mysql_result($codeQuery,0,'category_code');
    if($code == "SU") {
        $numSU++;
        $numItems = $numSU;
    } else if($code == "WE") {
        $numWE++;
        $numItems = $numWE;
    }
    $update = mysql_query("UPDATE product SET code='".$code."/".$numItems."'");
}