ich habe einen SQL-Script, welcher regelmäßig durch einen Cronjob
ausgeführt wird, und dafür sorgen soll, das die Daten aus einer
Datenbank mit denen einer anderen kombiniert und dort eingetragen werden
sollen.
Dazu führe ich mehrere Befehle der Art
update `db2`.`table` set `feld` = (select `feld` from `db1`.`table`
where `db2`.`table`.`name` = `db1`.`table`.`name` and
`db2`.`table`.`vorname` = `db1`.`table`.`vorname`);
aus.
Problem ist, das ich das mit mehreren Spalten machen muss, und jedenmal
die Unterabfrage neu ausgeführt wird. Wie kann ich das effizienter
Gestalten?
Danke für alle sachdienlichen Hinweise.
Gruß
Jens
Man kann die tabellen in der UPDATE Anweisung verbinden
UPDATE `db2`.`table`, `db1`.`table`
SET `db2`.`table`.`feld1`=`db1`.`table`.`feld1`,
`db2`.`table`.`feld2`=`db1`.`table`.`feld2`
WHERE `db2`.`table`.`name`=`db1`.`table`.`name` AND
`db2`.`table`.`vorname`=`db1`.`table`.`vorname`;
sollte das aber über einen Index laufen lassen, wegen eindeutiger
Zuweisung weil könnt ja zwei mit gleichen Namen geben, außer es ist so
gewollt!!
Man kann auch INSERT INTO mit ON DUPLIKATE KEY dann verbinden um zum
beispiel noch nicht vorhandene mit zu übernehmen:
INSERT INTO `db2`.`table`
(`Index`, `name`, `vorname`, `feld1`, `feld2`)
SELECT `db1`.`table`.`Index`, `name`, `vorname`, `feld1`, `feld2`
FROM `db1`.`tablel`
ON DUPLICATE KEY UPDATE `db2`.`table`.`feld1`=`db1`.`table`.`feld1`,
`db2`.`table`.`feld1`=`db1`.`table`.`feld1`;
>
>Gruß
>Jens
cu Stephan
Vielen Dank
Jens