gondor: UPDATE-Problem über 2 Tabellen (MySQL)

Hallo,

ich brauche Rat zu einer Update-Query. Ich möchte Tabelle 1 updaten. Und zwar soll der 'status' dann auf '1' gesetzt werden, wenn Tabelle2.xid = Tabelle1.xid und Tabelle2.yid = Tabelle1.yid sind. Leider klappt das bei mir nach mehrmaligen probieren nicht.

Kann mir jemand helfen?

Tabelle 1 (xid, yid, status)

1|1|0
1|2|0
1|3|0
1|4|0
1|5|0
2|1|0
2|2|0
2|3|0
2|4|0
2|5|0
...

Tabelle 2 (xid, yid)

1|1|
1|2|
1|4|
1|5|
2|1|
2|3|
...

Ergebnis Tabelle 1 (xid, yid, status)

1|1|1
1|2|1
1|3|0
1|4|1
1|5|1
2|1|1
2|2|0
2|3|1
2|4|0
2|5|0
...

Danke,

gondor(..)

  1. Hi,

    Das ist jetzt Sql-Server Syntax aber so ähnlich müsste es gehen,
    es sei denn MySql lässt das nicht zu:

    -->
    UPDATE (SELECT Tabelle1.status FROM Tabelle1 INNER JOIN Tabelle2 on Tabelle1.xid= tabelle2.xid AND Tabelle1.yid = Tabelle2.yid)
    SET status=1
    <--

    Viele Grüße
    apfelsine

  2. yo,

    update tabelle1 tab1 SET status = 1
    WHERE EXISTS (SELECT *
                  FROM tabelle2 tab2
                  WHERE tab2.xid = tab1.xid
                  AND   tab2.yid = tab1.yid
                  )
    ;

    Ilja

    1. update tabelle1 tab1 SET status = 1
      WHERE EXISTS (SELECT *
                    FROM tabelle2 tab2
                    WHERE tab2.xid = tab1.xid
                    AND   tab2.yid = tab1.yid
                    )
      ;

      @apfelsine: leider gab's ne fehlermeldung.

      @ilja: das hat funktioniert :) super!

      vielen dank,

      gondor(..)