Если у вас есть индекс для каждого «курсора», вы можете сделать это с помощью набора отношений, установить фильтр ...
Если вы создали курсоры с помощью SELECT ... INTO CURSOR csrData, обязательнодобавьте ключевое слово «READWRITE», чтобы разрешить доступный для записи курсор, на котором вы можете создавать индексные теги ..
select ... from ... where ... into cursor csrData READWRITE
то же самое с csrMatches - READWRITE.
После создания выполните следующие действия....
select csrMatches
index on Match_Foreign_ID tag Foreign_ID
select csrData
set relation to Foreign_ID into csrMatches
set filter to NOT EOF( "csrMatches" )
, поскольку данные связаны с другой таблицей совпадений, всякий раз, когда указатель записи перемещается из одной строки в другую, он пытается найти совпадение для вас в «связанном» курсоре (или стол).Если он не может найти один, этот другой курсор, он перемещает другой курсор в EOF () (конец файла).Итак, теперь вы можете установить фильтр на NOT EOF ("csrMatches")
Еще одно преимущество этого подхода заключается в том, что вы также можете фильтровать значения VALUES столбцов в другой таблице ... если вам когда-либо понадобилось,Например, если вы связывали данные о продажах с таблицей клиентов и хотели бы показать их на основе данных о клиенте в определенном штате или регионе.Конечно, все продажи будут связаны с клиентом, но вы можете применить фильтр через
select customers
set index to customerID
select SalesSample
set relation to customerID into customers
set filter for not eof( "Customers" ) and inlist( Customers.State, "NY, "PA", "MA" )