lachesis: [mysql] Frage zu Update

Hallo zusammen,

Ich kniffle momentan schon ne ganze Weile
an einem update statement für mysql.

Ich habe 2 Tabellen:

stunden

id uid pid stunden gebucht
1  2   5   4.5     0
2  1   5   2       0
3  3   2   6       0

user
id name kstelle
1  xxx  10
2  yyy  20
3  ttt  10

uid referenziert die id in der Tabelle user

Was ich möchte ist, dass alle Stundeneinträge in stunden auf gebucht=1 gesetzt werden bei denen die pid=5 ist und wo die kstelle der Users 10 ist. Also lediglich stunden.id=2.

ich habe versucht

UPDATE stunden
SET gebucht="1"
WHERE pid="5" AND user.kstelle="10"

Das funktioniert nicht, weile er user nicht kennt.

Wie funktionierts?

Danke für eure Hilfe (auch wenn meine Fragen meist blöd sind)

Grüßle, lach

  1. Ohne Garantie:

    UPDATE stunden
    SET gebucht="1"
    WHERE pid="5" AND user.kstelle="10"

    UPDATE stunden, user
    SET stunden.gebucht="1"
    WHERE stunden.pid="%" AND user.kstelle="10"

    MfG

    Michael

  2. Hi,

    Was ich möchte ist, dass alle Stundeneinträge in stunden auf gebucht=1 gesetzt werden bei denen die pid=5 ist und wo die kstelle der Users 10 ist. Also lediglich stunden.id=2.

    falls Deine MySQL-Version dazu in der Lage ist, könntest Du:

    1. einen Subselect in der WHERE-Bedingung einsetzen:

    UPDATE blah
           SET blah
           WHERE (pid = 5) AND (uid IN (SELECT id FROM user WHERE kstelle = 10))

    2. einen Join in der WHERE-Bedingung machen (ab V4.0x oder so...):

    UPDATE stunden,user
           SET stunden.gebucht = 1
           WHERE (stunden.pid = 5) AND (stunden.uid = user.id) AND (user.kstelle = 10)

    HTH Robert