Fan*_*nda 3 progress-4gl openedge
在这个例子中,我有两个表; 订单标题(oe-hdr)和位置(位置).订单表头表包含两个字段(sale-location-key和ship-location-key),这些字段在位置表中具有关联的位置名称.如果我使用SQL来获取结果,我会做这样的事情.
SELECT oe-hdr.order-num, oe-hdr.order-date, saleloc.location-name, shiploc.location-name
FROM oe-hdr,
(SELECT location.location-name
FROM oe-hdr, location
WHERE oe-hdr.sale-location-key = location-key) as saleloc,
(SELECT location.location-name
FROM oe-hdr, location
WHERE oe-hdr.ship-location-key = location-key) as shiploc
WHERE oe-hdr.order-num = saleloc.order-num
AND oe-hdr.order-num = shiploc.order-num
Run Code Online (Sandbox Code Playgroud)
有谁知道如何在Progress程序中复制它?
为"location"定义两个缓冲区,然后使用指向缓冲区的链接执行for-each:
DEFINE BUFFER saleloc FOR location.
DEFINE BUFFER shiploc FOR location.
FOR EACH oe-hdr
NO-LOCK,
EACH saleloc
WHERE saleloc.location-key = oe-hdr.sale-location-key
NO-LOCK,
EACH shiploc
WHERE shiploc.location-key = oe-hdr.ship-location-key
NO-LOCK
:
DISPLAY
oe-hdr.order-num
oe-hdr.order-date
saleloc.location-name
shiploc.location-name
DOWN
.
END.
Run Code Online (Sandbox Code Playgroud)
一个注释 - 如果位置表中不存在销售或送货地址,则不会显示整个记录.如果您需要该功能,则需要采用不同的方法 - 它将涉及将"链接"移动到FOR EACH块中的一对"FIND"语句.
| 归档时间: |
|
| 查看次数: |
1553 次 |
| 最近记录: |