php
  • mysql
  • 2011-12-10 12 views -1 likes 
    -1

    私は5つのテーブルがあります。このデータが5つのテーブルすべてに存在していないかどうかをチェックする1つのデータを更新する方法。mysqlのデータを確認するマルチテーブルを確認する

    私はINSERT ... ON DUPLICATE KEY UPDATEのようなものを知っているが、マルチテーブルのための例を見つけることができません。

    mysql_query("UPDATE table1 SET image = '' WHERE image = '".$image."' "); 
    mysql_query("UPDATE table2 SET image = '' WHERE image = '".$image."' "); 
    mysql_query("UPDATE table3 SET image = '' WHERE image = '".$image."' "); 
    mysql_query("UPDATE table4 SET image = '' WHERE image = '".$image."' "); 
    mysql_query("UPDATE table5 SET image = '' WHERE image = '".$image."' "); 
    mysql_query("UPDATE table1 SET image = '".$image."' WHERE id = '".$id."'"); 
    

    データがDUPLICATEある各テーブルの最初のアップデート空の値、値を挿入します。

    今、私のようないくつかの貧しい人々のクエリが使用しています。これは、より多くのmysqlの接続がかかると思う...だから、どのように少ないクエリを使用してこのアップデートを行うのですか?ありがとう。

    EDIT1:以下のように試してみると、値が無視されて値がすでに5つのテーブルの1つに存在していないかどうかを確認します。

    mysql_query(" 
    UPDATE table1,table2,table3,table4,table5 
    SET table1.image='".$image."' 
    WHERE table1.id='".$id."' 
    AND table1.image!='".$image."' 
    AND table2.image!='".$image."' 
    AND table3.image!='".$image."' 
    AND table4.image!='".$image."' 
    AND table5.image!='".$image."' 
    "); 
    
    +0

    を求め何だと思いますか? –

    +0

    イメージが5のいずれにもない場合、どのテーブルにINSERTする必要がありますか? –

    +0

    @ypercube、私はイメージサム作成ジョブのために働いています。 5つのテーブルは異なる構造ですが、私は別のテーブルに挿入するためにサム画像URLを重複しないようにしたい。ありがとう。 – cj333

    答えて

    2

    [OK]を、私は、これはあなたが5つの同一のテーブルを持っているか、なぜあなたは

    update table1 AS t1 
         LEFT JOIN table1 AS t1copy 
          ON t1copy.image = '$image'  
        set t1.image = '$image' 
    where t1.id = $id 
        and t1copy.image IS NULL 
        and not exists(select 1 from table2 where table2.image = '$image') 
        and not exists(select 1 from table3 where table3.image = '$image') 
    
    +0

    答えてくれてありがとう、私は唯一の( '' table1.image' table2.image' '' table3.image' table4.image' '表5から' DUPLICATE'をtable1.image' 'に' $ image'を挿入しないようにしたいです画像。ありがとう、2つのテーブルに値を挿入しないでください。 – cj333

    +0

    テーブルには挿入されません。あなたの最初の5つのクエリーに相当する処理を実行します。私はあなたが望むものについてのあなたの説明がはっきりしていないので、あなたのコードが正確に話すので、これを行うことを選択します。 – goat

    +0

    私の質問をうまく説明できません申し訳ありませんが、私の 'EDIT1'コードが望む通り、私は' table1'に値を1つ更新したいが、まずチェックしたい。 5つのテーブルすべてにこの値がない場合は、更新します。あなたが私を理解して助けてくれることを願っています。私 – cj333

    関連する問題