2012-03-11 14 views
1

私は同じ値 - 予約(tbl) - dropOffLocationとcars(tbl) - currentbranchで2つのテーブルのフィールドを更新しようとしています。結合で更新ステートメント

私は、以下のものと2つのUPDATEステートメントで望ましい結果を得ることができます。

UPDATE bookings b SET b.dropOffLocation = 'London' WHERE b.regNumber = 'AX03PFF' 
UPDATE cars c SET c.currentBranch = 'London' WHERE c.regNumber = 'AX03PFF' 

しかし、私は、JOINを使用して一つに2更新ステートメントを組み合わせるしたいと思います。 以下のSQLを試しましたが、何もしていません。

UPDATE 
    bookings b JOIN cars c 
SET 
    b.dropOffLocation = 'London' 
    AND c.currentBranch = 'London' 
WHERE b.regNumber = 'EP59YMP' AND c.regNumber = 'EP59YMP' 

誰かがジョインステートメントを修正して機能させるのに手伝ってください。

ありがとうございます!

+0

この質問を参照してください - http://stackoverflow.com/questions/4641970/how-do-i-combine-two-update-statements-inを-one-mysql-query – Jody

+0

PHPタグと一緒に何もしていないと言って、クエリの実行をエラーチェックしていないと思われます。 'mysql_query()'を使用している場合は、何がうまくいかなかったかを問い合わせ失敗で 'echo mysql_error()'してください。 –

答えて

3

あなたの構文は少しです。 ANDの代わりにをUPDATE SET句の中に使用してください。両方のテーブルをWHERE句に入れるのではなく、ON句をJOINに追加しました。これは、テーブル間の関係を直接記述するという点で少し読みやすくなります。

UPDATE 
    bookings b JOIN cars c ON b.regNumber = c.regNumber 
SET 
    b.dropOffLocation = 'London', 
    c.currentBranch = 'London' 
WHERE b.regNumber = 'EP59YMP' 
+0

+1。しかし、より大きな問題は、OPがSQLエラーをチェックしているように見えないことです。構文的に無効なSQL文は単に「何もしていません」ということです。 – ruakh

+0

@rukah非常に可能性があります。 –

+0

ありがとう、それは今働いている – Rob

0
UPDATE 
bookings b JOIN cars c 
on b.regNumber = c.regNumber 

SET 
b.dropOffLocation = 'London', 
AND c.currentBranch = 'London', 

WHERE b.regNumber = 'EP59YMP' AND c.regNumber = 'EP59YMP'; 
0

これを試してみてください:

UPDATE FROM bookings AS b 
LEFT JOIN cars AS c ON c.regNumber = b.regNumber 
SET b.dropOffLocation = 'London' AND c.currentBranch = 'London' 
WHERE b.regNumber = 'EP59YMP' 
関連する問題