Форум программистов, компьютерный форум, киберфорум
Oracle
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
1 / 1 / 0
Регистрация: 25.04.2013
Сообщений: 86
1

Обновление таблицы данными из неё же через запрос с inner join

13.03.2018, 11:36. Показов 2140. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день, требуется обновить поле field таблицы table для записей из запроса

Oracle 11 SQL
1
2
3
4
5
6
SELECT * FROM TABLE  t inner join doc ON doc.docid=t.docid 
inner join docstate d ON doc.docstateid=d.docstateid
inner join second_table i ON t.inf = i.apri
WHERE systemname IS NULL
AND tabledate BETWEEN TO_DATE('01.01.2017','dd.mm.yy') AND TO_DATE('31.12.2017','dd.mm.yy')
AND d.systemname IN('CREATED','APPROVED')
Ни как не могу сообразить как правильно построить Update
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.03.2018, 11:36
Ответы с готовыми решениями:

В какую сторону думать или запрос на обновление в строчках таблицы через форму
Доброго времени суток! Подскажите в какую сторону думать при наличии: 1. Access 2007; 2....

Запрос на обновление данных с использованием Inner Join
Кто подскажет как сделать запрос на обновление данных с использованием конструкции Inner Join Были...

Запрос и JOIN другой таблицы
Доброе время суток. Есть две таблицы: CREATE TABLE IF NOT EXISTS `category` ( `id` int(11)...

Сложный запрос с JOIN внутри таблицы
Задача следующая. Есть таблица Международной Классификации Болезней (МКБ 10). 23000 записей. В ней...

4
763 / 664 / 194
Регистрация: 24.11.2015
Сообщений: 2,158
14.03.2018, 09:33 2
Во-первых, такие вещи проще всего делать оператором merge.
Во-вторых, если обновлять поле field значением поля field из запроса, то с большой вероятностью ничего не изменится, значение заменится тем же самым значением. Поэтому прошу чуть подробнее: как именно надо обновлять поле field полем field?
То, как написан запрос, подразумевает включение в него всех полей из всех трех таблиц. По крайней мере две пары полей (doc.docid и t.docid, doc.docstateid и d.docstateid) в точности повторяются. Значит в запросе будут две пары полей с одинаковыми именами, что не есть хорошо. Может имеет смысл в запросе не писать * , а перечислить нужные поля? Может нужно оставить только некую комбинацию полей, которая будет заменять поле field?
0
1 / 1 / 0
Регистрация: 25.04.2013
Сообщений: 86
15.03.2018, 09:20  [ТС] 3
AGK,
Поле field нужно обновить константой 'значение'

на счёт * думаю вы правы, нужно просто обновить поле во всех строках отобранных из этого селекта. так что думаю можно оставить
Oracle 11 SQL
1
SELECT field FROM TABLE .....
0
763 / 664 / 194
Регистрация: 24.11.2015
Сообщений: 2,158
15.03.2018, 10:48 4
Лучший ответ Сообщение было отмечено tazer как решение

Решение

Цитата Сообщение от tazer Посмотреть сообщение
Поле field нужно обновить константой 'значение'
Ну тогда всё очень просто. В оракле у каждой таблицы есть псевдостолбец ROWID, по нему и надо связываться для UPDATE.
Как-то так надо:
SQL
1
2
3
4
5
6
7
8
9
10
11
12
MERGE INTO first_table ft
USING
(SELECT t.rowid rid FROM first_table  t INNER JOIN doc ON doc.docid=t.docid 
INNER JOIN docstate d ON doc.docstateid=d.docstateid
INNER JOIN second_table i ON t.inf = i.apri
WHERE systemname IS NULL
AND tabledate BETWEEN TO_DATE('01.01.2017','dd.mm.yy') AND TO_DATE('31.12.2017','dd.mm.yy')
AND d.systemname IN('CREATED','APPROVED'))  ss
ON (ss.rid = ft.ROWID)
WHEN matched THEN
     UPDATE SET ft.field = :newfield 
;
1
1 / 1 / 0
Регистрация: 25.04.2013
Сообщений: 86
16.03.2018, 09:01  [ТС] 5
AGK, Спасибо большое! Очень помогли
0
16.03.2018, 09:01
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.03.2018, 09:01
Помогаю со студенческими работами здесь

Запрос Join и таблицы с внешними ключами
Добрый день. Мне нужно вывести данные из нескольких таблиц. Использую Join,при выведении...

Обновление ComboBox с данными из таблицы access
Здравствуйте. Столкнулся со следующей проблемой. В программе присутствует ComboBox в который...

Обновление таблицы Access данными из DGV
Доброго времени суток! Пишу проект, который часто обращается к базе данных Access, иногда выводит...

Запрос на обновление, отняв один столбец из одной таблицы от другого столбца из другой таблицы
здравствуйте, как мне сделать запрос на обновление отняв один столбец из одной таблицы от другого...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru