在' WHERE'之后编写嵌套的4gl查询

时间:2016-12-02 09:33:01

标签: progress-4gl 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 个答案:

答案 0 :(得分: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.

答案 1 :(得分:0)

您可以尝试使用加入。

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