Subject Re: Select First, second and third child record to master
Author Svein Erling
Hi Davis!

I think your question can be best solved using EXECUTE BLOCK. I've never used it before (solved similar things using WITH RECURSIVE, but for this particular type of problem EXECUTE BLOCK is simpler and more intuitive), but try something like:

EXECUTE BLOCK RETURNS(CustomerId int, Name VarChar(255), ProductId1 integer, ProductId2 integer, ProductId3 integer)
as
declare i integer;
declare i2 integer;
begin
for select customerid, name from MasterTable into :CustomerId, :Name
do
begin
i = 1;
ProductId1 = null;
ProductId2 = null;
ProductId3 = null;
for select ProductId from ChildTable rows 1 to 3 into :i2 do
begin
if i = 1 then ProductId1 = i2;
if i = 2 then ProductId2 = i2;
if i = 3 then ProductId3 = i2;
i = i + 1;
end
suspend;
end
end

You really should use some field to order the records in the ChildTable (unless you want a random selection of records), but I didn't include any ORDER BY clause since you didn't specify how you wanted the fields ordered.

HTH,
Set