我有一个大学项目的bdf文件,我想从另一个表中给定匹配条件的值,测试每条记录(它们具有相同的id_number,但它们没有满足其他条件)。我一直坚持这样做,因为进行替换时,它仅从表中获取第一个参考值(而不是满足条件的值)。
那些没有条件1.Mp_id == d2.po
的人将在参考表中添加ship2
,对于不满足条件的其余部分,则添加ship2
以寻找参数{ {1}}从参考表中检索prod_code
。
ship2
非常感谢!
答案 0 :(得分:1)
不幸的是,“向您提供”代码并没有“教给您”有关如何执行此操作的任何信息。
下面的代码很快被编写下来,并且没有经过测试,但是,如果您花一些时间观看推荐的教程视频,则应该能够确定以下内容是否对您有用,如果不能,那么可能需要更改什么。
USE Ruta2 + "REFERENCE.dbf" IN 0 ALIAS d2 EXCL && Open 'Child' table
SELECT D2
INDEX ON po TAG Po && Index table on po field values
INDEX ON prod TAG Prod && Index table on prod field values
SET ORDER TO po && 'Activate' 'child' table Po index
USE Ruta + "FILE.dbf" IN 0 ALIAS d1 && Open 'Parent' table
SELECT D1
ALTER TABLE d1 ADD COLUMN ship c(10) &&create new column to fill in the reference
SET RELATION TO id INTO D2 && set relation such that d1.id = d2.po
REPLACE ALL d1.ship with d2.ship2 FOR !EMPTY(d2.po)
SELECT D2
SET ORDER TO Prod && 'Activate' 'child' table Prod index
SELECT D1
SET RELATION TO prod_code INTO D2 && set relation such that d1.prod_code = d2.prod
REPLACE ALL d1.ship WITH d2.ship2 FOR !EMPTY(d2.prod) AND d1.Mp_id != d2.po
祝你好运
答案 1 :(得分:1)
正如我所说,如果没有一些示例数据和示例输出,您不清楚要做什么。
您可以使用以下单个更新语句替换在... enddo时执行的操作:
Update d1 ;
Set ship = d2.ship ;
from d2 ;
where d1.Mp_Id == d2.po Or d1.Prod_Code == d2.Prod