タイトルが説明的でない場合は申し訳ありませんが、私がやろうとしていることを一文で説明するのはちょっと難しいです;)。
親オブジェクトとそれぞれの子オブジェクトをリンクするテーブルが 1 つあります。そして、すべてのオブジェクト (親と子) とそれぞれの画像を含む別のテーブルがあります。ただし、画像は親オブジェクトに設定されているだけです。この最後のテーブルを更新し、子の画像を親に既に設定されているのと同じ画像に設定したいと思います。また、オブジェクトごとに複数の画像があるため、属性列に基づいて知ることができる特定の画像を設定したいと思います。
私のテーブルは次のようになります。
関係テーブル
子ID
親 ID
画像テーブル
オブジェクト ID
属性 ID
画像の URL
そして、物事を明確にするために例を示します:
関係テーブル
子 ID | 親 ID
3 | 1
4 | 1
5 | 2
画像テーブル
オブジェクト ID | 属性 ID | 画像の URL
1 | 良い画像 | 画像1.jpg
1 | 悪いイメージ | image1b.jpg
2 | 良い画像 | 画像2.jpg
2 | 悪いイメージ | image2b.jpg
3 | 良い画像 | 番号
3 | 悪いイメージ | 番号
4 | 良い画像 | 番号
4 | 悪いイメージ | 番号
5 | 良い画像 | 番号
5 | 悪いイメージ | 番号
したがって、オブジェクト 3、4、および 5 (子) の画像をそれぞれの親画像に設定したいと思いますが、「正しい」画像、つまり属性 ID として「goodimage」を持つ画像に設定したいと思います。
最終的には次のようになります。
1 | 良い画像 | 画像1.jpg
1 | 悪いイメージ | image1b.jpg
2 | 良い画像 | 画像2.jpg
2 | 悪いイメージ | image2b.jpg
3 | 良い画像 | 画像1.jpg
3 | 悪いイメージ | 番号
4 | 良い画像 | 画像1.jpg
4 | 悪いイメージ | 番号
5 | 良い画像 | 画像2.jpg
5 | 悪いイメージ | 番号
実際には「badimage」が設定されていても構いませんが、重要なのは「goodimage」です。
私は次のようなことを試みてきました:
UPDATE ImageTable
SET image = (SELECT image-url FROM ImageTable WHERE ImageTable.object-id = RelationTable.parent-id AND ImageTable.attribute-id = 'goodimage')
WHERE ImageTable.object-id = RelationTable.child-id AND ImageTable.attribute-id = 'goodimage'
しかし、それは正しい SQL 構文ではないため、機能しません。変数を使用する必要があるかどうか (変数を使用したことがない)、またはこれが 1 つの SQL 文で実行できるかどうかはわかりません。
どんな助けでも大歓迎です。