抱歉,如果标题没有应有的描述性,但是很难用一句话来解释我要做什么;)。
我有一张表将父对象与其各自的子对象链接起来。我还有一张桌子,上面有所有对象(父母和孩子)及其各自的图像。但是,图像只是为父对象设置的。我想更新最后一张表并将子图像设置为其父图像已设置的相同图像。此外,由于每个对象有多个图像,我想特别设置一个,我可以根据属性列知道。
我的表看起来像:
关系表
孩子身份
父母身份
图像表
对象标识
属性标识
图片网址
为了澄清事情,这里举了一个例子:
关系表
儿童ID | 父母身份
3 | 1
4 | 1
5 | 2
图像表
对象 ID | 属性 ID | 图片网址
1 | 好形象 | 图像1.jpg
1 | 坏形象 | 图像1b.jpg
2 | 好形象 | 图像2.jpg
2 | 坏形象 | 图像2b.jpg
3 | 好形象 | 不
3 | 坏形象 | 不
4 | 好形象 | 不
4 | 坏形象 | 不
5 | 好形象 | 不
5 | 坏形象 | 不
因此,我想将对象 3、4 和 5(子对象)的图像设置为其各自的父图像,但设置为“正确”的图像,即具有“goodimage”作为属性 ID 的图像。
最后它应该看起来像:
1 | 好形象 | 图像1.jpg
1 | 坏形象 | 图像1b.jpg
2 | 好形象 | 图像2.jpg
2 | 坏形象 | 图像2b.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 语法。我不知道我是否应该使用一个变量(从未使用过),或者这是否可以只用一个 SQL 语句来完成。
任何帮助将非常感激。