phpbar.de logo

Mailinglisten-Archive

Subselect-Problem in UPDATE

Subselect-Problem in UPDATE

Rico Koerner rico at netbreaker.de
Mon Feb 9 19:46:43 CET 2009


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