Mailinglisten-Archive |
Hallo, ich habe hier 2 strukturell identische Ausgangstabellen 'gestern' und 'heute' und eine Zieltabelle 'ziel'. gestern und heute haben u.a. eine Spalte 'id', 'uid' und 'name' und weitere. Die gleiche uid kann mehrfach auftreten, hat dann aber auch immer denselben Namen innerhalb einer der beiden Tabellen. (Redundanz) Der Name kann sich allerdings in beiden Tabellen unterscheiden. SELECT heute.uid, gestern.name, heute.name FROM gestern INNER JOIN heute ON gestern.uid = heute.uid WHERE gestern.name != heute.name GROUP BY heute.uid gibt die gesuchten DS korrekt aus. Für das Update des Namens bräuchte ich ja so etwas wie: UPDATE ziel SET name=heute.name WHERE uid = (SELECT heute.uid, heute.name FROM ...) Aber das kann natürlich nicht funktionieren, da die Where-Bedingung ja nur mit einem Wert vergleichen kann und nicht weiß welchen von beiden und den anderen irgendwie an das SET weiterreichen müßte. Ich wollte mir den Umweg über PHP sparen, da alle anderen SQL-Statements auch in einem Shell-Skript mit mysql ... -e ... übergeben werden können. Allerdings weiß ich auch nicht, wie ich die Ausgabe von obigen Select in der Shell in einer Schleife für das UPDATE weiterverabeiten kann. Zugänge mit INSERT INTO ziel (uid, name, create_date) SELECT ... und Abgänge mit UPDATE ziel SET delete_date=NOW() WHERE uid = (SELECT ...) und den entsprechenden abweichenden SubSelects funktionieren. Kann mir jemand mit einem passenden SQL-Statement oder passenden Shell-Code weiterhelfen? Danke. Gruß Rico Körner _______________________________________________ Allgemeine Infos zur Liste: http://www.4t2.com/mysql/ Verwaltung: https://lists.4t2.com/cgi-bin/mailman/listinfo/mysql-de
php::bar PHP Wiki - Listenarchive