SQL - SELECTと計算カラムの現在の行を参照
質問
歯先を通じて時間をかけて自分の変化を含む -
私は契約のパラメータを表しているテーブルがあります。最初の添加物は、契約が最初に署名された場合のパラメータを示す「特別な」補遺である。
ここでは、テーブルは次のようになります方法です
ID ProjectID BeginDate DeadlineMonths DeadlineDate
1 20 20-12-2006 24 <computed= 20-12-2006 + 24 months>
2 23 12-03-2007 12 <computed= 12-03-2007 + 12 months>
3 20 06-09-2007 36 <computed= **20-12-2006** + 36 months>
PROJECTIDは、主キーもPROJECTID呼ばれるプロジェクトテーブルにFKでます。
私はそうのように計算され、DeadlineDateは計算フィールドになりたいます:
DeadlineDate COMPUTE BY ((
select first 1 AddMonth(contract.BeginDate, DeadlineMonths)
from addendums contract
where contract.projectid = projectid
order by contract.BeginDate ))
問題がcontract.projectid = projectid
第二PROJECTID SELECT文(contract.projectid
と同じである)の現在の行、計算された現在の行をしない参照しなければならないことである。
私はFirebirdのを使用しています。私は、データベースを使用するアプリケーションであるためORMの問題のテーブル内およびNOT SELECTステートメントの列を必要とします。
解決
ただ、現在のテーブルのテーブル名とフィールドの接頭辞:
DeadlineDate COMPUTED BY ((
select first 1 AddMonth(contract.BeginDate, DeadlineMonths)
from addendums contract
where contract.projectid = projects.projectid
order by contract.BeginDate ))
他のヒント
あなたのクエリに対するビューを作成し、ORM
でそれを使用することはできますか?
CREATE VIEW v_addendums
AS
SELECT ID, ProjectID, BeginDate, DeadlineMonths,
(
SELECT first 1 AddMonth(contract.BeginDate, DeadlineMonths)
FROM addendums contract
WHERE contract.projectid = a.projectid
ORDER BY
contract.BeginDate
)
FROM addendums a
所属していません StackOverflow