Php 将一个表复制到另一个具有不同列数的表
由于我远非php专家,这让我目瞪口呆,我似乎无法为它编写脚本 让我们看看我是否能尽可能清楚地解释这一点 假设我有表1和表2 表1=团队ID、名称、round1pos、round1score、round2pos、round2score 表2=id、tournamentid、teamid、姓名、round1pos、round1score、round2pos、round2score…直到round10pos/round10score 当从表1复制到表2时,我想在它前面添加两个字段。id和tournamentid 我面临的问题是表1每次都有不同数量的roundxpo/roundxscore 基本上,我想做的是,一旦比赛结束,我想删除表格。但将其中的数据复制到另一个表以归档结果。但每场比赛都有不同大小的回合Php 将一个表复制到另一个具有不同列数的表,php,mysql,Php,Mysql,由于我远非php专家,这让我目瞪口呆,我似乎无法为它编写脚本 让我们看看我是否能尽可能清楚地解释这一点 假设我有表1和表2 表1=团队ID、名称、round1pos、round1score、round2pos、round2score 表2=id、tournamentid、teamid、姓名、round1pos、round1score、round2pos、round2score…直到round10pos/round10score 当从表1复制到表2时,我想在它前面添加两个字段。id和tourn
我希望有人能理解我想要达到的目的+。您应该创建第三个表,从现有表中删除roundX列,并用它们的ID引用它们
rounds: team_id, tournament_id, no, pos, score
您应该规范化您的表,但同时。。。。 我假设主要问题是处理代码中数量可变的RoundXPO和roundxscore列 希望这有助于: 获取此查询的结果:显示表1中的列,其中的字段类似于“round%pos” 获取此查询的结果:显示表1中的列,其中的字段类似于“round%score” 通过循环字段名创建table2插入
//example, assuming results are fetched into an associative array
$query = "INSERT INTO table2 (tournamentid, teamid, name)";
foreach($roundpos_fields as $f){ $query .= "," . $f['Field']; }
foreach($roundscore_fields as $f){ $query .= "," . $f['Field']; }
$query .= "( SELECT $tournamentid, '' teamid, name";
foreach($roundpos_fields as $f){ $query .= "," . $f['Field']; }
foreach($roundscore_fields as $f){ $query .= "," . $f['Field']; }
$query .= ")";
这听起来像是一个非常糟糕的桌子设计。您可以更改它吗?您可以尝试规范化您的数据库,这样您就不必使用roundX任何东西,而是使用另一个关联的表,该表的tournamentID作为外键。此外,我从未见过删除一个表的需要,该表本身可以作为存档,尤其是因为数据库用户可能无权执行该命令,只能执行插入、选择、更新。或者你的意思是删除行?表的设计非常糟糕,整个脚本的重写将在6个月左右完成。通常情况下,你可以在比赛结束后删除比赛,这将删除保存这些分数的表格。但我想保留这些数据,这样人们仍然可以引用这些数据,从而尝试将其归档。多个表不是会使数据库变慢吗?否则我会保持原样。这确实是更好的解决方案,但是看到脚本有点糟糕,6个月后就要重写了,我正在寻找临时解决方案。