ottscho
Goto Top

MYSQL - Update Select Abfrage

Hi,

ich will gerne eine Update / Select Abfrage machen, aber bekomme den korrekten Syntax nicht hin. Ich hoffe es geht überhaupt.

Folgende 3 Tabelle gibst es: s_oder, s_user und s_user2

In der s_oder steht eine falsche userID. Diese würde ich gerne updaten.

Das Statement für die korrekte userID herauszufinden lautet so:
SELECT s_user2.id FROM s_order 
INNER JOIN s_user ON s_order.userID = s_user.id
INNER JOIN s_user2 ON s_user.email = s_user2.email
WHERE s_order.id > 14900

Leider weiß ich nicht genau wir ich das nun machen kann.
So geht es nicht:
Update s_order SET userID = 
(SELECT s_user2.id FROM s_order 
INNER JOIN s_user ON s_order.userID = s_user.id
INNER JOIN s_user2 ON s_user.email = s_user2.email)
WHERE s_order.id > 14900

Für einen Tipp bin ich dankbar.

MFG
ottscho

Content-ID: 189500

Url: https://administrator.de/contentid/189500

Ausgedruckt am: 22.11.2024 um 10:11 Uhr

nxclass
nxclass 13.08.2012 um 11:56:07 Uhr
Goto Top
korrekten Syntax nicht hin
deine innere SELECT Anweisung gibt ja eine Ergebnis Menge zurück
(
    SELECT ...
    LIMIT 1
)
... wird so wahrscheinlich auch nicht gehen, da die Tabelle durch das UPDATE gesperrt ist.

versuch mal:
UPDATE s_order
    INNER JOIN s_user ON s_order.userID = s_user.id
    INNER JOIN s_user2 ON s_user.email = s_user2.email
SET userID = s_user2.id
WHERE s_order.id > 14900
ottscho
ottscho 13.08.2012 um 12:20:02 Uhr
Goto Top
Hi,
danke.

Dein Befehl läuft durch. Sieht auch erfoglreich aus, aber leider wurde nichts geändert.
Siehe Screenshots. Oder habe ich noch einen Denkfehler?

Screen1: http://www.myimg.de/?img=screen10c895.jpg
Screen2: http://www.myimg.de/?img=screen25aa89.jpg
nxclass
nxclass 13.08.2012 aktualisiert um 16:37:51 Uhr
Goto Top
versuch nochmal:
UPDATE s_order
    INNER JOIN s_user ON s_order.userID = s_user.id
    INNER JOIN s_user2 ON s_user.email = s_user2.email
SET s_order.userID = s_user2.id
WHERE s_order.id > 14900

EDIT: benutzt du MyISAM oder InnoDB ?
ottscho
ottscho 14.08.2012 um 07:27:38 Uhr
Goto Top
Besten Dank für deine Hilfe. Hat alles nun wunderbar geklappt.