0

我只能在Where(. 是否可以编写嵌套查询以在完全不同的表中进行搜索?

例如

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

4

2 回答 2

2

不,这是不可能的。查询需要知道它的所有缓冲区。如果您唯一可以操纵的是实际的 WHERE 子句,那是不够的。

这就是它可以完成的方式,但您需要操作的不仅仅是 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.
于 2016-12-02T10:23:11.347 回答
0

您可以尝试使用连接。

FOR EACH WORK_ORDER NO-LOCK WHERE... , EACH PURCHASE_ORDER WHERE PURCHASE_ORDER.key <> '123'
于 2016-12-07T00:08:13.337 回答