Data verplaasten van db1 naar db2 op basis van datetime
Wil elke dag een query runnen, waarin data wordt verplaatst van db2 naar db1.
Nu wil ik dat hij alleen de nieuwe resultaten invoerd om deze check te doen wil ik het veld "ingevoerd" gebruiken. Dit veld zit in db2.tabel.
Er is geen mogelijkheid in db1.tabel een extra veld aan te maken om mee te vergelijken.
Voor het veld ingevoerd wil ik een datetime of timestamp gaan gebruiken. Dus voer alleen in als tijd is nieuwer.
Hoe kan ik dit het beste doen? Het mooiste zou zijn als hij ook nog laat zien hoeveel nieuwe records daadwerkelijk zijn invgevoerd.
Code die ik hiervoor nu gebruik is als volgt:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
$query = "
INSERT INTO db1.tabel
(veld1, veld2, veld3, veld4)
SELECT veld1, veld2, veld3, veld4
FROM db2.tabel
WHERE NOT EXISTS (SELECT *
FROM db2.tabel
WHERE db1.veld4 = db2.veld4 COLLATE utf8_unicode_ci);
";
$result = mysql_query($query) or die ("Foutmelding: $query. ".mysql_error());
echo "Ingevoerd;
?>
$query = "
INSERT INTO db1.tabel
(veld1, veld2, veld3, veld4)
SELECT veld1, veld2, veld3, veld4
FROM db2.tabel
WHERE NOT EXISTS (SELECT *
FROM db2.tabel
WHERE db1.veld4 = db2.veld4 COLLATE utf8_unicode_ci);
";
$result = mysql_query($query) or die ("Foutmelding: $query. ".mysql_error());
echo "Ingevoerd;
?>
Gewijzigd op 21/09/2014 11:06:40 door Johan Vels
AND db2.ingevoerd > MAX(db1.ingevoerd)
ORDER BY db2.ingevoerd
Kan dus geen vergelijking doen op veld ingevoerd van db2 naar db1. Omdat veld ingevoerd niet aanwezig is in db1.
*zat een fout in mijn code bij deze gecorrigeerd*
Gewijzigd op 21/09/2014 11:06:06 door Johan Vels
Een mogelijkheid is om vóór je de insert-query doet te bepalen wat max(db2.tabel.ingevoerd) is en die te vergelijken met een (elders opgeslagen) vorige waarde van max(db2.tabel.ingevoerd).
Hoe voer ik dit code wise uit? Stel dat ik dus de controle wil doen met veld ingevoerd2 in db2.
Toevoeging op 21/09/2014 18:34:08:
Johan Vels op 21/09/2014 17:00:56:
Ah oke,
Hoe voer ik dit code wise uit? Stel dat ik dus de controle wil doen met bv. veld 'ingevoerd2' in db2.
Hoe voer ik dit code wise uit? Stel dat ik dus de controle wil doen met bv. veld 'ingevoerd2' in db2.