const
  cGUID = 'CEC535371C4A431690F5EAE1166554A8';

  procedure OpenNewTabForGroup(AGroup: TCatalogPropGroup);
  var
    AElem: TidElement;
  begin
    // delete results from a former run
    PublicCatalog.RemoveItemsFromTempList(AGroup.IncludeItems);

    // do search
    AElem := TidElement.Create(nil);
    try
      AElem.Prop['OpenNewTab'] := True;
      AElem.Data := AGroup;
      PublicBroadcast(nil, 'ShowGroupResults', AElem);
    finally
      AElem.Free;
    end;
  end;

  function MainFilter: WideString;
  begin
    result := 'select GUID ' +
              'from   idCatalogItem i ' +
              'where  coalesce(i.GroupGUID, '''') <> '''' ' +
              'and    not exists (select 1 from idCatalogItem i2 where i2.GroupGUID = i.GroupGUID and i2.GroupOrder = 0)  ' +
              'and    not exists (select 1 from idImageVersion i2 where i2.GroupGUID = i.GroupGUID and i2.GroupOrder = 0)  ' +
              'union all ' +
              'select GUID ' +
              'from   idImageVersion i ' +
              'where  coalesce(i.GroupGUID, '''') <> '''' ' +
              'and    not exists (select 1 from idCatalogItem i2 where i2.GroupGUID = i.GroupGUID and i2.GroupOrder = 0)  ' +
              'and    not exists (select 1 from idImageVersion i2 where i2.GroupGUID = i.GroupGUID and i2.GroupOrder = 0)  ' +
              'union all ' +
              'select GUID ' +
              'from   idCatalogItem i ' +
              'where  coalesce(i.GroupGUID, '''') = '''' ' +
              'union all ' +
              'select GUID ' +
              'from   idImageVersion i ' +
              'where  coalesce(i.GroupGUID, '''') = '''' ' +
              '';
    end;

var
  AGroup: TCatalogPropGroup;
  ADs: TDBXOMClientDataSet;
begin
  AGroup := TCatalogPropGroup.Create(nil);
  AGroup.GroupName := 'Not Stacked or Stacked without Top Item';
  AGroup.IncludeItems.GUID := cGUID;  // fix the GUID

  ADs := PublicCatalog.NewDataset;
  ADs.CommandText := 'select ' + PublicCatalog.FullColumnList('i.') + ' ' +
                     'from   v_catalogitem i ' +
                     'inner join (' + MainFilter + ') as f on f.GUID = i.GUID ' +
                     'UNION ALL ' +
                     'select ' + PublicCatalog.FullColumnList('i.') + ' ' +
                     'from   v_catalogitemversion i ' +
                     'inner join (' + MainFilter + ') as f on f.GUID = i.GUID ' +
                     '';
  ADs.LockType := ReadLockType;
  ADs.OpenSet;
  AGroup.IncludeItems.AddDataset(ADs, True);
  AGroup.IncludeItems.Disconnect;
  PublicCatalog.FreeDataset(ADs);

  OpenNewTabForGroup(AGroup);
end;
