Подскажите пожалуйста, пройдет ли такой Update

Zolmo
Дата: 23.01.2013 11:59:45
UPDATE  a   SET a.tci =
           (SELECT b.id
              FROM b   WHERE b.roi =
                       (SELECT c.roi
                          FROM c
                         WHERE c.roi =
                                   (SELECT d.roi
                                      FROM d
                                     WHERE d.fi = a.fi)))
   where a.tci = 'o' and a.ed is null


будет ли работать такой запрос нужно что бы значения a.tci = 'o' стали равны значениям b.id ?
Проблема в том что таблицы a и b не связаны на прямую, а связь выглятит так b ->c ->d ->a
И стоит ли искользовать в update вложенный select ?
Гавриленко Сергей Алексеевич
Дата: 23.01.2013 12:00:25
Замените update на select и посмотрите.
Zolmo
Дата: 23.01.2013 12:09:35
Гавриленко Сергей Алексеевич, так такой select мне ничего не выдаст. Ибо изначально если a.tci равны нулю они уже не равны b.id
Glory
Дата: 23.01.2013 12:15:03
Zolmo
так такой select мне ничего не выдаст.Ибо изначально если a.tci равны нулю они уже не равны b.id

Тогда что поменяется для UPDATE ? Он каким то волшебным образом исправит это ?
Добрый Э - Эх
Дата: 23.01.2013 12:16:26
Zolmo,
Zolmo
так такой select мне ничего не выдаст. Ибо изначально если a.tci равны нулю они уже не равны b.id


стало быть твой апдейт заNULLит все значения в поле tci для строк, удовлетворяющих условию a.tci = 'o' and a.ed is null
Кот Матроскин
Дата: 23.01.2013 12:18:17
Запрос очень кривой, поскольку если хотя бы 1 из 3 подзапросов вернет несколькол строк - будет ошибка.
samoxod
Дата: 23.01.2013 12:20:47
Zolmo,

А так не то же самое будет:
Update a set tci = b.id
   FROM a
   INNER JOIN d on a.fi = d.fi
   INNER JOIN c on d.roi = c.roi
   INNER JOIN b on c.roi = b.roi
   where a.tci = 'o' and a.ed is null

?
А селект точно не возвращает НЕСКОЛЬКО b.id?
Zolmo
Дата: 23.01.2013 12:30:58
поля по которым проходят селекты уникальны, повторений быть не должно.
Zolmo
Дата: 23.01.2013 12:31:33
нет, это id таблицы, там не может быть повторений =)
iap
Дата: 23.01.2013 13:02:26
Zolmo
нет, это id таблицы, там не может быть повторений =)
Какой таблицы?
Их там вон сколько
Повторения вполне себе возможны, если отношение хотя бы между двумя таблицами не 1:1