Извините, если название не такое описательное, как должно быть, но в одном предложении довольно сложно объяснить, что я пытаюсь сделать;).
У меня есть одна таблица, которая связывает родительские объекты с соответствующими дочерними объектами. И у меня есть еще одна таблица со всеми объектами (родители и дети) с соответствующими изображениями. Тем не менее, изображение просто установлено для родительских объектов. Я хотел бы обновить эту последнюю таблицу и установить для дочернего изображения то же изображение, которое уже установлено для его родителя. Кроме того, поскольку для каждого объекта имеется более одного изображения, я бы хотел установить одно конкретное, которое я могу знать по столбцу атрибута.
Мои таблицы выглядят примерно так:
RelationTable
ребенок-идентификатор
родитель-идентификатор
ImageTable
ID объекта
атрибут-идентификатор
изображения URL
А вот пример, чтобы прояснить ситуацию:
RelationsTable
child-id | родитель-идентификатор
3 | 1
4 | 1
5 | 2
ImageTable
идентификатор объекта | идентификатор атрибута | изображения URL
1 | Goodimage | image1.jpg
1 | плохое изображение | image1b.jpg
2 | Goodimage | image2.jpg
2 | плохое изображение | image2b.jpg
3 | Goodimage | нет
3 | плохое изображение | нет
4 | Goodimage | нет
4 | плохое изображение | нет
5 | Goodimage | нет
5 | плохое изображение | нет
Итак, я хотел бы установить изображения объектов 3, 4 и 5 (дочерние) на соответствующие родительские изображения, но на «правильные», то есть изображения с «goodimage» в качестве атрибут-идентификатора.
В конце оно должно выглядеть так:
1 | Goodimage | image1.jpg
1 | плохое изображение | image1b.jpg
2 | Goodimage | image2.jpg
2 | плохое изображение | image2b.jpg
3 | Goodimage | image1.jpg
3 | плохое изображение | нет
4 | Goodimage | image1.jpg
4 | плохое изображение | нет
5 | Goodimage | image2.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.
Любая помощь будет принята с благодарностью.