Problem bei Update über zwei Tabellen

Problem bei Update über zwei Tabellen

am 28.04.2006 19:29:09 von t.haehne

Hallo,

ich habe ein Problem mit einem Update über zwei Tabellen (MySQL-Version
4.1.15-nt). Folgendes UPDATE

UPDATE job_working_days a
JOIN job b ON a.job_id = b.old_job_id
SET a.job_id = b.old_job_id
WHERE a.t_stamp >= 1143842400
AND b.project_id IN (34, 35, 36, 37)

will einfach nicht funktionieren. Es werden immer 0 Datensätze
gefunden/aktualisiert. Die identische SELECT-Query

SELECT *
FROM job_working_days a
JOIN job b ON a.job_id = b.old_job_id
WHERE a.t_stamp >= 1143842400
AND b.project_id IN (34, 35, 36, 37)

liefert hingegen knapp 300 Datensätze. Vielleicht sitze ich jetzt schon
wieder zu lange vorm Rechner - aber ich kann den Fehler nicht sehen.

Für Hilfe und Tipps wäre ich dankbar.

Viele Grüße

Timo

Re: Problem bei Update über zwei Tabellen

am 28.04.2006 23:55:10 von Axel Schwenke

"Timo Hähne" wrote:
> Hallo,
>
> ich habe ein Problem mit einem Update über zwei Tabellen (MySQL-Version
> 4.1.15-nt). Folgendes UPDATE
>
> UPDATE job_working_days a
> JOIN job b ON a.job_id = b.old_job_id
> SET a.job_id = b.old_job_id
> WHERE a.t_stamp >= 1143842400
> AND b.project_id IN (34, 35, 36, 37)
>
> will einfach nicht funktionieren. Es werden immer 0 Datensätze
> gefunden/aktualisiert.

Nicht "gefunden". Aktualisiert.

Dein JOIN findet alle Kombinationen mit a.job_id = b.old_job_id.
Deine SET-Klausel versucht exakt diese - bereits vorhandene -
Gleichheit herzustellen. M.a.W. : das ist eine Nulloperation.
Deswegen auch 0 affected rows.


XL