powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / UPDATE CASE WHEN
3 сообщений из 3, страница 1 из 1
UPDATE CASE WHEN
    #40050487
Skroubar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте. Помогите пожалуйста обновить таблицу. Есть таблица с актерами. Есть таблица с фильмами и таблица с информацией в каком фильме играл актер. Вот например в Зеленом слонике 2 роли, Поехавший и Братишка.
Мне нужно заменить Епифанцева и Пахомова на Егора Араба и Артема Брюкву.
Мой запрос:
Код: sql
1.
2.
3.
4.
5.
6.
7.
UPDATE cast_info
SET person_id = CASE
 WHEN note = ('bratishka') THEN (select id from name where name='Artem Brykva')
 WHEN note= ('poekhavshij') THEN (select id from name where name='Egor Arab')
END
where movie_id=(
    select id from title where title like 'Zelyonyy slonik' AND production_year='1999');


cast_info-таблица с инф. где кто играл
name- Таблица с актерами. title -с фильмами.
ОШИБКА: значение NULL в столбце "person_id" отношения "cast_info" нарушает ограничение NOT NULL
Может быть и case не нужен, я просто не знаю как выполнить.
...
Рейтинг: 0 / 0
UPDATE CASE WHEN
    #40050496
Swa111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Skroubar,

Вам нужно наложить дополнительное условие, и заодно защиту от null на всякий случай

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
UPDATE cast_info
SET person_id = coalesce(CASE
 WHEN note = ('bratishka') THEN (select id from name where name='Artem Brykva')
 WHEN note= ('poekhavshij') THEN (select id from name where name='Egor Arab')
END, person_id)
where movie_id=(
    select id from title where title like 'Zelyonyy slonik' AND production_year='1999')
and note in ('bratishka', 'poekhavshij')
;
...
Рейтинг: 0 / 0
UPDATE CASE WHEN
    #40050550
Skroubar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Swa111, Cпасибо за отклик. Теперь он делает без ошибки. Но он меняет все роли на в person_id (Это актеры которые играют) на одно id актера Артема Брюквы. Я хочу по ролям сделать. Не знаете из-за чего такое может происходить?
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / UPDATE CASE WHEN
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]