0

画像をテーブルにロードし、アイテム番号、画像サイズ、画像リンクを与えるプロジェクトに取り組んでいます。次に、このテーブルを在庫テーブルとマージする必要があります。在庫テーブルにはアイテムごとに 10 個の異なる写真を含めることができますが、画像テーブルには 3 行しかありません。この表には、それぞれ異なる画像とサイズの複数のアイテム番号があります。table2 からのリンクを使用して table1 を更新し、10 個の画像すべてを埋めるにはどうすればよいでしょうか?

update table1
 if (imglink is not null)
    set
  imgsize1 = c.imagesize,
  imglink1= c.imageLink
  else if (imglink1 is not null)
  set
  imgsize2 = c.imagesize
  imglink2= c.imageLink
  else if (imglink2 is not null)
  set
  imgsize3 = c.imagesize
  imglink3 = c.imageLink
  else if (imglink3 is not null)
  set
  imgsize4 = c.imagesize
  imglink4 = c.imageLink
  else if (imglink4 is not null)
  set
  imgsize5 = c.imagesize
  imglink5 = c.imageLink
  else if (imglink5 is not null)
  set
  imgsize6 = c.imagesize
  imglink6 = c.imageLink

  else if (imglink6 is not null)
  set
  imgsize7 = c.imagesize
  imglink7 = c.imageLink
  else if (imglink7 is not null)
  set
  imgsize8 = c.imagesize
  imglink8 = c.imageLink
  else 
  set
  imagesize = c.imagesize
  imagelink = c.imageLink


from table2 as c
 WHERE c.itemno = i.itemno

私たちがやろうとしていることは理にかなっていますか? どんな助けでも大歓迎です。前もって感謝します。

編集: MS SQL 2008 を使用しています。画像テーブルはクライアントの 1 つからインポートされたもので、指定された形式です。3列の大きなテーブル。アイテム番号、画像サイズ、画像リンク。

サンプルデータ:table1(在庫表)-

itemno | imageLink  | imageLink1 | imageLink2 | imageLink3 | imageLink4 | imageLink5 | imageLink6 | imageLink7 | imageLink8 | imageLink9

table2 (画像テーブル)-

itemno | imageLink  | size
itemno | imageLink1 | size
itemno | imageLink2 | size
itemno | imageLink3 | size
itemno | imageLink4 | size
itemno | imageLink5 | size
itemno | imageLink6 | size
itemno | imageLink7 | size
itemno | imageLink8 | size
itemno | imageLink9 | size
4

1 に答える 1

0

クエリに配置IFすることはできません。条件付きで列を設定する方法は次のとおりです。SETUPDATE

SET <colName> = IF(<condition>, <newvalue>, <colName>)

条件が true の場合、値が変更されます。それ以外の場合は、現在の値が列に割り当てられます。

あるテーブルを別のテーブルに基づいて更新するための一般的な構文は次のとおりです。

UPDATE table1 t1
JOIN table2 t2 ON t1.itemno = t2.itemno
SET t1.col1 = <expression which may reference t2>,
    t1.col2 = <expression which may reference t2>,
    ...
WHERE ... /* this clause is optional */

更新の具体的なロジックはわかりませんが、必要なものを正しい構文に変換するにはこれで十分であることを願っています。そうでない場合は、更新したクエリを質問に追加してください。

于 2013-06-27T21:01:29.523 に答える