Solution 2 works, but is slow. See
http://www.componentworkshop.com/blog/2009/06/26/sql-server-basics-avoiding-in-and-not-in[
^] for more information on why you don't want queries with IN or NOT IN. You can keep your original join, but add a condition that no record in Protocol was found by checking for null values:
SELECT SampleRegistration.SampleNumber
FROM SampleRegistration
INNER JOIN NewSampleEntrys ON SampleRegistration.QlCode = NewSampleEntrys.QLID
LEFT JOIN Protocol ON SampleRegistration.SampleNumber = Protocol.SampleNumber
WHERE (NewSampleEntrys.RecvdDate > '1/1/2013')
AND (SampleRegistration.Tested = 'F')
AND (Protocol.Id IS NULL)
Assuming Id is an existing Id column in the Protocol table. If it's named differently, please update the condition to reflect this.