使用另一个表中的数组值更新表中的多个值

时间:2015-07-16 10:06:15

标签: php mysql

我需要使用表2(reqs)中的数据更新表1(inspjc)中的字段(级别),其中“level”字段的名称不同(reqs_level)。

两个表都具有相同的标识字段名称(reqs_id)和相应的数据。

“reqs”表中包含所有“reqs_id”数字(大约1000个条目),其中只有一些“reqs_id”数字出现在“inspjc”表中。 “reqs_level”字段中描述的级别范围为0到108,因此无法知道这些已分配级别的顺序或使用,它们根据每个需求的要求显示为随机。

我在堆栈溢出中尝试了一些示例,但没有一个接近。

以下是我最近的尝试:

<?php
include("../xxx");
$cxn = mysqli_connect($host,$user,$password,$dbname);
$query = "SELECT `inspjc`.`reqs_id`,`reqs`.`reqs_level`
            FROM `inspjc` 
            JOIN `reqs`
            ON `inspjc`.`reqs_id`,`reqs`.`reqs_id`
            WHERE `inspjc`.`inspjc_id` = '$inspjc_id' 
            AND `reqs`.`reqs_id` = `reqs`.`reqs_no`";
$result = mysqli_query($cxn,$query);
    while($row = mysqli_fetch_assoc($result))
    {
    extract($row);
    $ids = array("$reqs_id");
    $level = array("$reqs_level");
    }

include("../xxx");
$cxn = mysqli_connect($host,$user,$password,$dbname)
    or die ("Couldn't connect to server.");
$query = "UPDATE `inspjc` SET `level`='".$level."' WHERE `reqs_id` IN ('".implode(',', $ids)."') AND `inspjc_id` = '$inspjc_id'";
$result = mysqli_query($cxn,$query)
    or die ("Couldn't execute query4. "
        .mysqli_error($cxn));           
?>

表格的一些数据示例 (请注意“reqs”有55列和1093个条目,“inspjc”有9列和78个条目)

reqs
reqs_id     status_id   reqs_required   reqs_level
00324       3           Erection        32
00526       7           Erection        5
00112       8           Modify          96

inspjc
reqs_id     inspjc_id   inspjc_date     level
00112       K3456Y      2015-06-30      ***96***
00526       K3456Y      2015-04-22      ***5*** 

1 个答案:

答案 0 :(得分:0)

经过反复试验,我说得对,以下是对问题进行排序的查询:

UPDATE `inspjc` i
    JOIN `reqs` s
    ON i.`reqs_id` = s.`reqs_id`
    SET i.`level` = s.`reqs_level` 
    WHERE i.`inspjc_id` = '$inspjc_id'