I think you need to re-arrange your query to find sales that had no valid Member, then list those memebers.
but as GilaMonster states, Please create DDLs with temp tables, and a grid showing what you actually want.www.sqlservercentral.com/articles/Best+Practices/61537/
But this is going to return Multiple Rows and probably not what you want.
SELECT z.*, t.purchase_dt
FROM membership_record_tbl z
INNER JOIN (
SELECT b.member_id, b.company_id, b.purchase_dt
FROM sales_log_tbl b
LEFT OUTER JOIN membership_record_tbl a
ON a.member_id = b.member_id
AND a.company_id = b.company_id
AND b.purchase_dt between a.membership_effective_dt and a.membership_term_dt
WHERE a.Member_id IS NULL)t
ON z.member_id = t.member_id
AND z.company_id = t.company_id