title: Mysql join to find "missing" "related" rows
body: <p>I have an ownership relation between two tables,
  say <code>users(int user_id)</code> and <code>user_books(int user_book_id,int user_id,int book_id)</code>
  and two additional tables <code>books(int book_id, varchar book_title, int author_id)</code> and <code>authors (int author_id, varchar author_name)</code>.</p>
  
  <p>Given a specific <code>user_id</code> I want to get the books that the user DOES NOT HAVE that where written by authors that he does have other books writen by them.</p>
  
  <p>So if the user has BOOK1 (i.e. there exists a row for this in <code>user_books</code>) and does not have BOOK2 and BOOK3 that where written by the same author as BOOK1, I want to get the ids for BOOK2 and BOOK3.</p>
  
  <p>I guess I can do this using a SELECT WHERE NOT IN () but for performance reasons I am looking for a join based solution.</p>