2013-09-20 5 views
0

Привет, моя проблема в том, что я хочу обновить поле в 1 таблице, используя другое поле из нескольких таблиц, зависящее от того, где элемент возникает из моей единственной проблемы, - это таблица, которую я пытаюсь обновить, имеет несколько одинаковых значений в поэтому я получаю «однострочный подзапрос возвращает более 1 строки». Я не возражаю против всех обновленных полей с одинаковым значением. Heres мой SQL:Обновление нескольких полей SQL

update URL_SET_TAB u 
Set U.ITEM_NAME = (select a.PROGRAMME_NAME 
        from (SELECT (nvl(nvl(b.prog_name,c.movie_name), A.URL_1)) as programme_name, a.ID, a.URL_1 
         FROM URL_SET_TAB a, prog_name_lookup b, movie_name_lookup c 
         where a.url_1 = b.url_1(+) and a.url_1 = C.MOVIE_URL(+) 
         ) a 
        where u.ID = a.ID and U.URL_1 = a.URL_1 
        ) 
+0

Как у вас есть отличный подзапрос это означает, что ваше утверждение «все обновляемых полей с одинаковым значением такое же,» не является правильным, существуют различные значения из подзапроса – Mark

+0

жаль, что я использую oracle и жалею, что при добавлении при добавлении отдельного добавлено при удалении его. – Charlie

+0

ошибка: однострочный подзапрос возвращает больше thaan 1 row 'может произойти из-за нескольких значений, поступающих из подзапроса (при выборе programme_name). Это может не произойти из-за наличия нескольких строк в таблице url_set_tab. Как вы сказали, вы получаете несколько строк для значений ID и URL_1, но эти значения одинаковы, а затем для преодоления ошибки в отношении нескольких строк вы можете добавить слово '' '' ', а затем выбрать a.programme_name. –

ответ

0

Вам нужно определить ключевой столбец, который когда подобрано для URL_SET_TAB и вид рядный а так, что подзапрос возвращает только одну запись. Это ограничение предложения UPDATE.

Спасибо, Aditya

+0

Каковы мои возможности, если у меня нет уникального ключа, который соответствует моим другим запрошенным таблицам? – Charlie

Смежные вопросы