Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Обновление ячеек, через связующую таблицу / 4 сообщений из 4, страница 1 из 1
31.07.2016, 12:26
    #39283426
execa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление ячеек, через связующую таблицу
Прошу помощи в довольно несложной задаче, которая мне не поддается.

Имеется три таблицы:
1. Обновляемая таблица, состоит из полей:
* row_id_table1 - ид строки в таблице 1
* target_field - поле, которое нужно будет обновить

2. Связующая таблица, состоит из:
* row_target_table2 - ид строки в таблице 2
* row_target_table1 - ид строки в таблице 1
* row_target_table3 - ид строки в таблице 3

3. Таблица из которой берем значение, состоит из:
* row_id_table3 - ид строки в таблице 3
* source_field - поле, из которого нужно взять значение для обновления

Прошу помочь составить запрос на обновление строк в таблице 1, значениями из таблицы 3. Заранее благодарен.
...
Рейтинг: 0 / 0
31.07.2016, 12:46
    #39283428
qwwq
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление ячеек, через связующую таблицу
execa,

а ф чом траблема ? (кроме схемы многие ко многим)

так и пишем. например корелят, как самое понятное

Код: sql
1.
2.
3.
4.
5.
6.
7.
ОБНОВИТЬ назначение
УСТАНОВИТЬ назначение.поле 
                    =(ВЫБРАТЬ источник.поле ИЗ источник ГДЕ источник.ключ= связь.ключ_источника 
                         ПРЕДЕЛ 1 --- из--за многие ко многие
                     )
ИЗ связь 
ГДЕ связь.ключ_назначения=назначение.ключ



можно децл изменить - перенести источник из корелята в соединение

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
ОБНОВИТЬ назначение
УСТАНОВИТЬ назначение.поле 
                    источник1.поле
ИЗ 
(ВЫБРАТЬ 
              ключ_назначения
              ,источник.поле
ИЗ источник, связь
ГДЕ источник.ключ= связь.ключ_источника --OR JOIN ON
             -- ПРЕДЕЛ 1 --- из--за многие ко многие
) источник1
ГДЕ источник1.ключ_назначения=назначение.ключ



и даже менять стока раз скока много попадет в много
...
Рейтинг: 0 / 0
31.07.2016, 13:11
    #39283430
execa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление ячеек, через связующую таблицу
qwwq, проблема банальна, мои варианты не работали, поскольку sql'ем я занимаюсь по долгу службы, а не по призванию,
спасибо за варианты, попробую
...
Рейтинг: 0 / 0
02.08.2016, 08:45
    #39284310
LeXa NalBat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление ячеек, через связующую таблицу
execa,

https://www.postgresql.org/docs/9.5/static/sql-update.html

Попробуйте использовать UPDATE FROM. Примерно так. Не проверял.

Код: sql
1.
2.
3.
4.
UPDATE table1
  SET target_field = source_field
  FROM table2, table3
  WHERE row_id_table1 = row_target_table1 AND row_target_table3 = row_id_table3
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Обновление ячеек, через связующую таблицу / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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