2009-10-12 3 views
1

최대 절전 속성 수식 필드에 문제가 있습니다. 두 테이블 열을 결합 할 수 없습니다.최대 절전 모드의 수식 필드에서 자식 테이블 값을 계산하십시오.

shift_id 열은 job_card의 부모 테이블에 속하고 durationjob_card_idle_time의 자식 테이블에 속한다. 그러나 두 열 모두 job_card의 부모 테이블에 속한 것으로 간주합니다. 결과 쿼리와

<property 
    name="utilization" 
    formula="(count(shift_id)*340)-sum(duration)/(count(shift_id)*340)" 
    generated="never" 
    insert="false" 
    update="false" 
    type="float"> 
</property> 

:

select (count(this_.shift_id)*340)-sum(**this_.duration**) /(count(this_.shift_id)*340) as y0_, 
    this_.JOB_CARD_DATE as y1_ 
    from job_card this_ 
    left outer join job_card_idle_time ir1_ on this_.JOB_CARD_ID=ir1_.JOB_CARD_ID 
    where this_.JOB_CARD_DATE between ? and ? 
    group by this_.JOB_CARD_DATE 
    order by this_.JOB_CARD_DATE desc 

나는이로합니다.

select (count(this_.shift_id)*340)-sum(**ir1_.duration**) 
    /(count(this_.shift_id)*340) as y0_, 
    this_.JOB_CARD_DATE as y1_ 
    from job_card this_ 
    left outer join job_card_idle_time ir1_ on this_.JOB_CARD_ID=ir1_.JOB_CARD_ID 
    where this_.JOB_CARD_DATE between ? and ? 
    group by this_.JOB_CARD_DATE 
    order by this_.JOB_CARD_DATE desc 

어떻게 구현합니까?

+0

답변 옆에있는 위 화살표를 사용하여 유용하다고 생각되는 답변에 투표하는 것이 좋습니다. 그리고 결국 한 가지 대답이 맞으면 작은 표식을 클릭하여 답변을 수락 할 수 있습니다. – KLE

답변

3

이 유형의 쿼리는 파생 된 속성이 아닌 쿼리로 매핑하는 것이 가장 좋습니다.

Formula현재 테이블의 열을 기반으로 한 SQL 식만 포함 할 수 있습니다. 다른 테이블에서 열을 사용하는 유일한 방법은 하위 선택으로 수식을 작성하는 것입니다 :

(SELECT count(card.shift_id) * 340 - sum(idleTime.duration)/(count(card.shift_id) * 340) 
    FROM job_card card 
    LEFT OUTER JOIN job_card_idle_time idleTime on card.job_card_id = idleTime.job_card_id 
    WHERE card.shift_id = shift_id) 

당신이이 쿼리 실행시 메인 엔티티 테이블의 별칭로 시작됩니다 별칭없이 열을 참조합니다. 그러나 위의 내용은 외부 기준에 따라 하위 선택 내에서 그룹화 할 수 없기 때문에 원하는 것을 수행하지 않습니다. 또한 데이터베이스에 따라 하위 선택 내에서 왼쪽 외부 조인이 지원되지 않을 수 있습니다.

+0

+1 정밀도에 감사드립니다. 쓸모없는 것으로 판명 된 답변을 삭제했습니다. – KLE

+0

"별칭이없는 열을 참조하면 쿼리 실행 중에 기본 엔터티 테이블의 별칭이 접두사로 사용됩니다." 4.3.11의 최대 절전 모드에서도 여전히 그렇습니까? 부모 엔티티 _id가 별칭이없는 간단한 수식이 있습니다 : @Formula ("SELECT count (child._id) FROM 자식 child WHERE child._parent__id = _id)")'마지막 _id는 포함하는 Entity를 참조해야합니다 (부모)하지만 생성 된 SQL에서는 별칭이 지정되지 않습니다. – Casey

관련 문제