第三个表将填充第一个表和第二个表的数据。
第三个表应该容纳尽可能多的记录 (第一张表)*(第二张表)
在导入数据之前,应事先检查数据, 因为如果记录已经存在,导入过程将被传递到下一条记录。
这是我的查询
$queryS = "SELECT id FROM tabel where x=$x ";
$resultS = $Databaseku->prepare($queryS);
$resultS->execute();
while($dataS = $resultS->fetch())
{
$id = $dataS["id"];
$queryK = "SELECT id FROM tabel2 where y=$y ";
$resultK = $Databaseku->prepare($queryK);
$resultK->execute();
$j=1;
while($dataK = $resultK->fetch())
{
$idK = $dataK["id"];
$cekdata = "select a,b,c from tabel3 where a=$id AND b=$idK";
$ada = mysql_query($cekdata) or die(mysql_error());
if(mysql_num_rows($ada)>0)
{
//record-$j already. do nothing
}
else
{
$query = "INSERT IGNORE INTO tabel3 (a, b, c) VALUES (:a, :b, :c)";
$result = $Databaseku->prepare($query);
$data = array(
':a' => $id,
':b' => $idK,
':c' => $c
);
$result->execute($data);
}
$result=null;
$j++;
}
$resultK=null;
}
$resultS=null;
echo "Succed";
答案 0 :(得分:0)
如果可能SELECT id FROM tabel2 where x=$x
,select a,b,c from tabel3 where d=$d
,请不要在每次迭代时执行此查询。在循环之前做一次。
按组插入数据,不要为每条记录执行插入。例如,插入包含1000条记录的组:
INSERT IGNORE INTO tabel3 (a, b, c) VALUES
(:a1, :b1, :c1),
(:a2, :b2, :c2),
...
(:a1000, :b1000, :c1000);