phpbar.de logo

Mailinglisten-Archive

update tabelle a wo kein a mehr in b

update tabelle a wo kein a mehr in b

Ruediger Weiss ruediger_weiss at web.de
Die Jan 14 09:23:29 CET 2003


> Beide Queries (obwohl sie mir beide logisch und syntaktisch korrekt
> erscheinen) schmieren mit Syntax Error jeweils *vor* der deklaration der
> zweiten Tabelle ab.
> Also in Bsp.1 "near LEFT"
> in Bsp.2 "near t_client_group_data"
> 
> was kann des sein ?
> gehen obige Abfragen nicht in meiner Version ? (3.23.49)
> 

NEIN, Verknüpfungen im update gehen erst ab 4.04.
vgl.: http://www.mysql.com/doc/en/UPDATE.html

Also bleibt nur eines: ausprogrammieren mit php, java oder was auch immer du nimmst.
Du kannst mit einem left join eine temp. Tabelle füllen, die die Daten enthält, die zwar in a aber nicht in b sind (oder umgekehrt, wie du es brauchst, weiss deine Aufgabenstellung nicht mehr so genau), dir aus der Tabelle einen String erzeugen in der Art 

String inClause = " where id in ( 1, 2, 3, 4, 5) " ;

und dann das Statement erzeugen, das du benötigst

String updateStatement = "update a set deleted = 1 " + inClause;


Der left join sieht etwa aus wie der in der Doku zum Thema sub-selects beschriebene:
SELECT table1.* FROM table1 LEFT JOIN table2 ON table1.id=table2.id
                                       WHERE table2.id IS NULL;

vgl. http://www.mysql.com/doc/en/ANSI_diff_Sub-selects.html
Im User Comment Bereich dieser Seite (also unten) ist ein Beispiel für eine php4 Funktion mit nested queries, die dir vielleicht generell solche Probleme löst.


Ich hoffe, es hilft etwas ...
Gruß, Rüdiger

______________________________________________________________________________
Erster Klick - SMS versenden, zweiter Klick - die Telefonnummer im 
Adressbuch speichern bei: http://freemail.web.de/features/?mc=021151

-- 
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->>  http://www.4t2.com/mysql 


php::bar PHP Wiki   -   Listenarchive