Форум: "Базы";
Текущий архив: 2014.05.25;
Скачать: [xml.tar.bz2];
ВнизПроблема с запросом. Найти похожие ветки
← →
Очень злой (2011-02-25 16:06) [0]Делаю такой запрос: (смысл: заполнить поле t1field1 значениями из другой таблицы. Если возникает неоднозначность, то берем наиболее подходящее значение)
UPDATE sometable1 a
SET t1field1 = (SELECT t2field1
FROM (SELECT t2field1 , t2field3
FROM sometable2
WHERE t2field2 = a.t1field2
ORDER BY t2field3 DESC)
WHERE ROWNUM = 1)
WHERE EXISTS (SELECT null
FROM sometable2
WHERE t2field2 = a.t1field2)
Получаю сообщение об invalid identifier (строку выделил жирным).
Подскажите, пожалуйста, как решить проблему?
← →
Sergey13 © (2011-02-25 17:14) [1]> Если возникает неоднозначность, то берем наиболее подходящее значение
Это в смысле первое попавшееся? 8-)
> Получаю сообщение об invalid identifier (строку выделил жирным).
Присвой алиас втаблице в подзапросе и используй его. Возможно есть такое поле в обеих таблицах.
Как то так может прокатит (если я не запутался 8-))?SET t1field1 = (SELECT t2field1 FROM sometable2 t2 WHERE t2.t2field2 = a.t1field2 and t2.t2field3=
(select max(t2field3) FROM sometable2 t3 WHERE t3.t2field2 = a.t1field2)
)
← →
Очень злой (2011-02-25 18:59) [2]
> Это в смысле первое попавшееся? 8-)
>
Нет. Ибо там есть ORDER BY t2field3 DESC, т.е. сначала сортируется по убыванию, потом берется первая запись WHERE ROWNUM = 1 из получившегося..
> Как то так может прокатит (если я не запутался 8-))?
Спасибо. Как-то не подумал что можно статистические фукции использовать в данной ситуации...
← →
Кщд (2011-02-26 08:40) [3]
SELECT max(b.t2field1) keep (dense_rank last order by b.t2field3)
FROM sometable2 b
WHERE b.t2field2 = a.t1field2
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2014.05.25;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.002 c