2016-12-19 9 views
1

У меня есть база данных, где мне нужно обновить данные в некоторой таблице на основе реестров другой таблицы. Могу ли я получить помощь, как в том, как это сделать, так как я немного застрял с этим.PostgreSQL Ошибка: столбец «i» отношения «inventory» не существует

У меня есть этот запрос на выборку в качестве справки:

select i.* 
from transaction as 't' 
inner join transaction_detail as 'td' 
on t.id_transaction=td.id_transaction 
inner join inventory as 'i' 
on i.id_inventory=td.id_inventory 
where t.registered_date>='2016-09-01'; 

и что я хочу сделать, это обновить одно поле из таблицы я на основе даты из таблицы т, так что бы что-то вроде этого:

update inventory i 
set i.status='cancel' 
from transaction_detail td 
inner join transaction t 
on t.id_transaction=td.id_transaction 
where t.registered_date>='2016-09-01' 
and i.id_inventory=td.id_inventory; 

Я делаю это на postgres, любые указатели? Должен ли я попытаться сделать это с помощью функции?

РЕДАКТИРОВАТЬ: Если это вообще помогает, отношения между столбцами относятся друг к другу от транзакции к transaction_detail и один к одному от transaction_detail к инвентарю.

+0

сообщение об ошибке, вы выложили не соответствует запрос, который вы пытаетесь выполнить – e4c5

+0

Возможный дубликат [PostgreSQL: Ошибка: столбец отношения не существует] (http://stackoverflow.com/questions/24939839/postgresql-error-column-of-relation-does-not-exist) –

ответ

2

См https://www.postgresql.org/docs/9.3/static/sql-update.html

column_name The name of a column in the table named by table_name. The column name can be qualified with a subfield name or array subscript, if needed. Do not include the table's name in the specification of a target column — for example, UPDATE tab SET tab.col = 1 is invalid.

Так что вам нужно изменить set i.status='cancel' к set status='cancel'

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