I still think there is a more elegant way to do this BUT a subquery did it. here is the code
SELECT
a.ID, a.Active, a.un_username AS UserName, a.Relationship, a.Category, a.FirstName, a.MiddleName, a.LastName, a.Gender, a.Race, a.BirthDate, a.SocSecurityNumber, a.Address, a.City, a.State, a.Zip, a.Phone, a.Fax, a.CreateDate,
COUNT(DISTINCT b.Objects_ID) HomeCount,
c.EventDate AS LastCBC,
d.Status,
d.PerformingAgency,
d.PerformingAgencyPhone,
d.ReferenceNumber,
d.Notes AS CBCNotes
FROM
gf_subcontractors a LEFT JOIN gf_objects b ON a.ID=b.Subcontractors_ID AND b.ParentObject='gf_fosterhomes'
LEFT JOIN (
SELECT Objects_ID AS _max_sub_CBC_ID_, MAX(EventDate) AS EventDate
FROM gf_objects
WHERE
Relationship = 'Criminal Background Check'
AND ParentObject='gf_subcontractors'
GROUP BY Objects_ID
) c ON a.ID=c._max_sub_CBC_ID_
LEFT JOIN gf_objects d ON c.EventDate=d.EventDate AND d.Objects_ID=a.ID
GROUP BY a.ID
not only that but it appears to be a very fast query - the table names aren't super obvious but you'll get the concept if you study it. hth someone