Inconsistent answers to simple queries
As @Scott Hodgin has pointed out on his comments there is some NULL value for person_id in the documents table.

You can easily avoid it by adding where person_id is not null




create table persons (personID int);
create table documents (documentID int, personID int);

insert into persons values(10),(11),(12),(13),(14),(15);
insert into documents values (1,10),(1,11),(1,null),(2,null),(3,11),(3,15);
GO



12 rows affected






select * from persons where personID in (12,13,14);
GO



| personID |
| -------: |
|       12 |
|       13 |
|       14 |






select * from documents where personID in (12,13,14);
GO



documentID | personID
---------: | -------:






select personID from documents
GO



| personID |
| -------: |
|       10 |
|       11 |
|     null |
|     null |
|       11 |
|       15 |






select *
from   persons
where  personID not in (select personID from documents);
GO



| personID |
| -------: |






select *
from   persons
where  personID not in (select personID from documents where personID is not null);
GO



| personID |
| -------: |
|       12 |
|       13 |
|       14 |



dbfiddle here