Ik heb een basistabel met zo'n 27.000 records die ik wil aanvullen met gegevens uit een updatetabel. In de updatetabel staan dezelfde gegevens als in de basistabel, aangevuld met nieuwe records.
Nu lees ik de update tabel uit, en zoek per regel in de basistabel of het record al bestaat. Zo ja, dan wordt deze overgeslagen, zo nee dan wordt het record toegevoegd aan de basis tabel.
een eenvoudige constructie:
Gewoon een simpel testje dus om te kijken of de constructie werkt. Het script loopt echter eindeloos. Is er een sneller en efficiëntere methode om dit soort dingen te doen? Ik heb me redelijk suf gezocht op GoT en Google maar kom er niet uit...
Nu lees ik de update tabel uit, en zoek per regel in de basistabel of het record al bestaat. Zo ja, dan wordt deze overgeslagen, zo nee dan wordt het record toegevoegd aan de basis tabel.
een eenvoudige constructie:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| $updatenumber = 0;
$addnumber = 0;
$query1 = "SELECT * FROM updatebestand ORDER BY clientid";
$result1 = mysql_query($query1) or die("Oeps! Query fout! MySQL zegt: ".mysql_error()." En PHP zegt: $error_msg");
while ($rowupdate = mysql_fetch_object($result1))
{
$query2 = "SELECT * FROM basisbestand WHERE clientid = '".$rowupdate->clientid."'";
$result2 = mysql_query($query2) or die("Oeps! Query fout! MySQL zegt: ".mysql_error()." En PHP zegt: $error_msg");
if (mysql_num_rows($result2) == 0)
{
// toevoegen
$addnumber++;
}
else
{
// updaten
$updatenumber++;
}
}
$uploadmessage .= "Aantal updates: ".$updatenumber." / Aantal toevoegingen: ".$addnumber++."<br />"; |
Gewoon een simpel testje dus om te kijken of de constructie werkt. Het script loopt echter eindeloos. Is er een sneller en efficiëntere methode om dit soort dingen te doen? Ik heb me redelijk suf gezocht op GoT en Google maar kom er niet uit...
[ Voor 14% gewijzigd door klaaz op 16-10-2005 02:43 ]