2016-12-02 1 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

[OK]はい、私はwhere節の後にあるものだけにアクセスできます –

0

あなたが参加を使用して試みることができます。

FOR EACH WORK_ORDER NO-LOCK WHERE... , EACH PURCHASE_ORDER WHERE PURCHASE_ORDER.key <> '123' 
関連する問題