2016-12-02 10 views
0

Where( 뒤에 4gl 쿼리 만 쓸 수 있습니다. 완전히 다른 테이블에서 검색하기 위해 중첩 된 쿼리를 작성할 수 있습니까? 작동하지 않는 예를'WHERE'다음에 중첩 된 4gl 쿼리 작성

분명히
**FOR EACH WORK_ORDER WHERE(** 

//my query starts on this line 
1=1 and 
(for each purchase_order where key <> '123' end) 

이 들어

하지만 그것이 작동되도록 할 수 있습니다? 이 쿼리를 사용하면 오류가 발생합니다 : PREPARE syntax is {FOR|PRESELECT} EACH OF..WHERE" (7324)

답변

2

아니요, 불가능합니다. 쿼리는 모든 버퍼를 인식해야합니다. 조작 할 수있는 유일한 것이 실제 WHERE 절이면 충분하지 않습니다.

은 그것을 할 수있는 방법이지만, 당신은 단지 곳 이상을 조작해야합니다

DEFINE QUERY q1 FOR WORK_ORDER, PURCHASE_ORDER. 

QUERY q1:QUERY-PREPARE("FOR EACH WORK_ORDER, EACH PURCHASE_ORDER WHERE PURCHASE_ORDER.id = WORK_ORDER.id"). 

QUERY q1:QUERY-OPEN(). 

QUERY q1:GET-FIRST. 

IF AVAILABLE work_order THEN DO: 
    DISP work_order. 
END. 
ELSE DO: 
    DISP "no work_order". 
END. 

IF AVAILABLE purchase_order THEN DO: 
    DISP purchase_order. 
END. 
ELSE DO: 
    DISP "no purchase_order". 
END. 

QUERY q1:QUERY-CLOSE. 
+0

좋아요, 그렇습니다. 단지 where-clause 다음에 오는 액세스 권한이 있습니다. 슬프게도 –

0

당신은 조인을 사용하여 시도 할 수 있습니다.

FOR EACH WORK_ORDER NO-LOCK WHERE... , EACH PURCHASE_ORDER WHERE PURCHASE_ORDER.key <> '123'