* set up some test data create cursor First_Table (PK N(4,0), DataValue C(10)) insert into First_Table values (1, "One") insert into First_Table values (2, "Two") insert into First_Table values (3, "Three") insert into First_Table values (4, "Four") insert into First_Table values (5, "Five") create cursor second_Table (PK N(4,0), FK N(4,0), DataValue C(10)) insert into Second_Table Values (1, 1, "First") insert into Second_Table Values (2, 2, "Second") insert into Second_Table Values (3, 3, "Third") * Select all the records from the first table and any matching from the second select F.*, s.* ; from First_Table F, Second_Table s ; where f.pk = s.fk ; UNION ; select f.*, 0000, 0000, space(10) ; from First_Table F ; where f.pk not in (select s.fk from Second_Table s) ; INTO CURSOR LJoin browThe key is the UNION - get all of the records that do match from the first table, and UNION that set with all of the records that don't match.