質問

歯先を通じて時間をかけて自分の変化を含む -

私は契約のパラメータを表しているテーブルがあります。最初の添加物は、契約が最初に署名された場合のパラメータを示す「特別な」補遺である。

ここでは、テーブルは次のようになります方法です

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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top