문제

계약의 매개 변수를 나타내는 테이블이 있습니다. 첫 번째 부록은 계약에 서명되었을 때 매개 변수를 나타내는 "특별한"부록입니다.

테이블의 모습은 다음과 같습니다.

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 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).

파이어 버드를 사용하고 있습니다. 데이터베이스를 사용하여 응용 프로그램의 ORM 문제로 인해 선택 문에없고 테이블의 열이 필요합니다.

도움이 되었습니까?

해결책

현재 테이블의 테이블 이름으로 필드를 접두사 만 접두사합니다.

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