Build a relationship between your two tables, call them A and B for the moment, based on that common field. A is the one that is the base of your query; B is the one that might not be there sometimes. Therefore, the relationship will be for "every record in A and every matching record in B." This is in essence a "one-to-many" type of relationship, but you REALLY want that option because this is NOT a one-to-one relationship (due to B sometimes being absent.)
I'm going to assume that you never have the case where you have one A record and many matching B records. Your description at least implied that B was SPARSE with respect to A.
Now build a query using the query grid builder with those two tables participating. Because you have the relationship defined first, the query builder will honor it and make the correct kind of JOIN for you, which (I'm guessing) will be a LEFT OUTER JOIN on the common field.
In this query, include the required fields for your tests and computations or whatever you are doing. But include the common field from B using the construct where you put an alternate field name followed by a colon followed by the field you wanted from the B table. The grid for that field might have [BCommon: Common] in it (but of course you use the correct name for your field.)
Now you can write a query based on this JOIN query and tell it you want to see records where your test field = 4 or test field = 5 or IsNull(BCommon) = true.