マンガでよめる痔のこと・薬のこと

AtableというテーブルとBtableというテーブルのTypeフィールドをupdateする場合、テーブルが異なるごとにmysql_queryを使っているのですが、この場合、ひとつにまとめられないものでしょうか?
このような使用方法が通常ですか?
よろしくお願い致します。

$ASQL = "update Atable set Type = 1 where id = $a";
$BSQL = "update Btable set Type = 1 where id = $b";
mysql_query($ASQL);
mysql_query($BSQL);

A 回答 (2件)

MySQL特有の記入方法のようですので、あまりお勧めはできませんが、1個のUPDATEで複数のテーブルを更新することは可能です。


たとえば
UPDATE ATABLE A,BTABLE B SET A.TYPE=1,B.TYPE=1
WHERE A.ID=B.ID AND (A.ID=2 OR B.ID=3)
です。
ただし、2個のテーブルの結合結果に対する結合テーブルに対しUPDATEするので、思わぬ動きをするので注意下さい。
ID=2がATABLEとBTABLEの両方に存在すると、BTABLEの内容も変わってしまう。
ID=3がBTABLEにしかない場合は結合出来ないのでB.ID=3のテーブルの内容は更新されない。
    • good
    • 0

updateの場合はテーブルの列記やjoinすることで連携して更新は可能ですが


ご提示の例だと、関連性がない2つの更新でしかなく、
ひとつのテーブルに対しても2つ発行するクエリーでは?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング