2011-07-18 10 views
1

私はこれを理解しようとしているナットを行く....助けてください:( を、私は3つのテーブルを持っていると私は2つの他のテーブルのデータからテーブルを更新していますUPDATE new table他の2つのテーブルに参加しますか?

更新表しています:。set_colors 列:setcolors_id (プライマリー)、art_id(int型)、baseimage_id(int型)、COLOR_ID(INT)

2つのテーブル私は

表名から情報を取得しています:芸術 列:ID(プライマリー)、artname(varchar型)、シリーズコード(varchar)

テーブル名:baseimage カラム:ID(プライマリ)、base_folder(VARCHAR)、グラフィック、のimage_type(VARCHAR)、層(INT) 例えばデータ:技術テーブルから

series_codebase_folder baseimageテーブルは同じ値を持ちますが、artテーブルには何百もの重複シリーズコードがあり、baseimageには同じbase_folder名があってもレイヤーが異なる場合は最大5つしかありません。

例えばデータ:

Art Table baseimage

Iアートテーブルとset_colorsテーブルを更新する[ID]、baseimage [ID]、およびbaseimageは= "B"、そう何それ行う必要COLOR_IDだから結果は、このようなものになりますので、いくつかの行がintまたはNULL

することができる別のSQLクエリーによって更新されますcolumn--アートテーブル「層」を反復処理です:

Result Set Colors table

私が思いついたのはこれですが、動作しません。エラーメッセージはありません。それは単に表に値を設定しません。私は何が欠けているのですか?

$result_array = mysql_query(" 
UPDATE set_colors 
JOIN art 
JOIN baseimage 
ON art.series_code = baseimage.base_folder 
SET set_colors.school_art_id = art.id, 
set_colors.baseimage_id = baseimage.id, 
set_colors.baseimage_layer = baseimage.layer 
WHERE baseimage.image_type = 'B'" 
); 
return !empty($result_array) ? array_shift($result_array) : false; 
+0

あなたは本当に既存の行を更新しますか、またはあなたが実際に新しい行を挿入しようとしているの? –

+0

さて、それは良い点です!私はそれがまだ存在しないことをINSERTにするだろうと思う... doh。 UPDATEではなくINSERT以外のクエリが同じ場合はINSERT?実際に私はちょうどそれを試して、それは動作しなかったので、私はまだ間違って何かをしている – GGcupie

答えて

0

、私はあなたのINSERT文は次のようなものになるはずだと思う:

INSERT INTO set_colors 
    (art_id, baseimage_id) 
    SELECT a.id, b.id 
     FROM baseimage b 
      INNER JOIN art a 
       ON b.base_folder = a.series_code 
     WHERE b.image_type = 'B' 
+0

ありがとうございます!これで新しいことは時々本当に吸うことができます。明らかに明白なことは、比較的新しい人には全く分かりません。もう一度ありがとう、これは素晴らしいです! – GGcupie

0

MySQL UPDATEのドキュメントhereを調べることをおすすめします。 MySQLの構文に基づいて更新プログラムを再構築する必要があると思います。

0

まず、「テーブルを作成する」と言うとき、このクエリで新しい行を挿入すると思われますか?更新クエリは新しい行を作成せず、テーブルに既に存在する行のみを更新します。

第2に、mysql_queryが配列を返すと予想されるようです。この関数は、クエリが正しく実行されたかどうかに応じて挿入または更新クエリを実行するときにのみ、trueまたはfalseを返します。コメントに基づいて

+0

ああ大丈夫。最近、私はこの権利を得るつもりです – GGcupie

関連する問題