Php 使用另一个表中的数据更新表
我有两个表,一个是tbl_人口统计表,其中有coluimns[staffid,natid],另一个是tbl_国籍表,其中有[natid,description]列 人力资源部以excel格式向我发送员工数据,其中包含我上传的员工姓名和国籍。唯一的问题是“国籍”列包含的数据是加拿大而不是(CAN)或尼日利亚而不是(NGA) 如何用sql(甚至php)编写脚本,将tbl_人口统计中的所有natid更新为与正确的tbl_natid对应的数据?我使用的是mysql服务器(必要时还可以使用php) 他们发送的数据:Php 使用另一个表中的数据更新表,php,mysql,database,Php,Mysql,Database,我有两个表,一个是tbl_人口统计表,其中有coluimns[staffid,natid],另一个是tbl_国籍表,其中有[natid,description]列 人力资源部以excel格式向我发送员工数据,其中包含我上传的员工姓名和国籍。唯一的问题是“国籍”列包含的数据是加拿大而不是(CAN)或尼日利亚而不是(NGA) 如何用sql(甚至php)编写脚本,将tbl_人口统计中的所有natid更新为与正确的tbl_natid对应的数据?我使用的是mysql服务器(必要时还可以使用php) 他们发
staffid | natid
201001 | Canadian
202332 | Nigerian
预期表格如下所示:
staffid | natid (tbl_demographics)
201001 | CAN
202332 | NGA
natid | description (tbl_nationality)
CAN | Canada
NGA | Nigeria
创建一张地图,其中键为国家全名,值为Abrevision。对于国家/地区字段,如果键位于地图中,则使用值作为国家/地区,否则只需使用hr中的键/条目即可:
$count = 0;
$result = mysql_query("SELECT * FROM tbl_nationality");
while ($source = mysql_fetch_array($result)) {
$nationality[$count] = $source['description'];
$natid[$count] = $source['natid'];
$count++;
}
$num = 0;
$result = mysql_query("SELECT * FROM tbl_demographics");
while ($source = mysql_fetch_array($result)) {
$count = 0;
while (isset($natid[$count])) {
if ($source['natid'] == $nationality[$count]) {
$index[$num] = $source['staffid'];
$correctid[$num] = $natid[$count];
$num++;
}
$count++;
}
}
$num = 0;
while (isset($index[$num])) {
mysql_query("UPDATE tbl_demographics SET `natid` = '$correctid[$num]' WHERE `staffid` = '$index[$num]'");
$num++;
}
然后选择不正确的变量并进行更正。使用此选项,假设您将HR excel数据放在名为
tbl\u excel
的表中(仅SQL):
当然,这需要他们发送的数据描述(加拿大、加拿大)与tbl_national
表中的描述相匹配
$query_demo = "SELECT * FROM tbl_demographics";
$res_demo = mysql_query($query_demo);
while ($row = $mysql_fetch_assoc($res_demo)) {
$query_nat = "SELECT natid FROM tbl_nationality WHERE description='" . $row["description"] . "'";
$res_nat = mysql_query($query_nat);
$arr_nat = $mysql_fetch_assoc($res_nat);
if ($arr_nat) {
$query_update = "UPDATE tbl_demographics SET natid='" . $arr_nat["natid"] . "' WHERE staffid=" . $row["staffid"];
mysql_query($query_update);
}
}
编辑:这假设tbl_人口统计最初包含一些错误的国家,并且错误的国家对应于tbl_国籍中的描述
我的代码循环遍历初始的“错误”tbl_人口统计信息,查找tbl_国籍中的相应描述,从那里读取natid,并更新tbl_人口统计信息中的相应条目。tbl_国籍中还需要有“加拿大人”而不是“加拿大”等,或者它们之间的关系保持一致。
$query_demo = "SELECT * FROM tbl_demographics";
$res_demo = mysql_query($query_demo);
while ($row = $mysql_fetch_assoc($res_demo)) {
$query_nat = "SELECT natid FROM tbl_nationality WHERE description='" . $row["description"] . "'";
$res_nat = mysql_query($query_nat);
$arr_nat = $mysql_fetch_assoc($res_nat);
if ($arr_nat) {
$query_update = "UPDATE tbl_demographics SET natid='" . $arr_nat["natid"] . "' WHERE staffid=" . $row["staffid"];
mysql_query($query_update);
}
}