2017-03-15 6 views
0

私の会社でプライマリストアとしてPostgreSQLを使用していますが、3つの異なるテーブルを含む更新クエリを実装するのに苦労しています。ここ3つのテーブルが含まれた複雑な更新

スキーマである:

  • 表1は、ENTITY_TYPEとのcompany_id(Company.idを参照)カラムをENTITY_IDました。
  • 会社
  • Special_companyは(Table1.entity_idに相当する)のIDとIは、表1のすべての行を更新したい

のcompany_id(Company.idを参照)を有するTable1.entity_type = 'SpecialCompany'順にID列を有します

:私はそのような何かを始めました

Table1.entity_id = SpecialCompany.id and SpecialCompany.company_id = Company.id

Table1.company_idように記入します

UPDATE Table1 
SET company_id = (select c.id 
        FROM company c 
        INNER JOIN special_company w ON c.id=w.company_id 
        WHERE w.id=709) 
WHERE entity_type='SpecialCompany' AND entity_id=709; 

ただし、709をすべてTable1.entity_idTable1.entity_type = 'SpecialCompany')と置き換えることはできません。

ご協力いただければ幸いです。

答えて

1

私は私の質問に答えています:

UPDATE Table1 t SET company_id = c.id FROM Company c
INNER JOIN special_company w ON c.id=w.company_id WHERE t.entity_type = 'SpecialCompany' AND t.entity_id=w.id;

おかげ@Krishnaあなたの助けのために!

+0

私はこれを調べる時間がありませんでした。私のクエリはMSSQLで動作します。私はそれがPostgreのためだと気付かなかった。申し訳ありません。 – Krishna

1

私はあなたがこのようなものを探していると仮定します。私は解決策を見つけたよう

update t 
set t.company_id=c.id 
from 
Company C 
INNER JOIN special_company w ON c.id=w.company_id 
INNER JOIN Table1 t on t.entity_id=w.entity_id 
Where t.entity_type = 'SpecialCompany' 
+0

ありがとうございました。これを行うと、最初の行にエラーが表示されます: '' 'UPDATE t SET ^ **********エラー********** エラー:関係" t "存在しません SQLの状態:42P01 文字:112''' –

関連する問題