title: How to use an operator in where clause with an optional include?
body: <p>I have the following Model:</p>
  
  <pre><code>AuthorModel.hasMany(BookModel);
  BookModel.belongsTo(AuthorModel);
  </code></pre>
  
  <p>Some authors have no books.</p>
  
  <p>I want to select an author whose name or title of one of his books matches the search string.</p>
  
  <p>I can achieve this with the following statement, but only for authors with books in their BookModel</p>
  
  <pre><code>       Author.findOne({
           include: [{
              model: Book,
              where: {
                [Op.or]: [
                    {'$author.name$': 'search string'},
                    { title: 'search string'}
                   ]
                 },
               }]
             })
  </code></pre>
  
  <p>This gives me more or less the following <code>mysql</code> query:</p>
  
  <pre><code>SELECT 
      `author`.`name`,
      `book`.`title`
  FROM `author` INNER JOIN `book` 
       ON `author`.`id` = `book`.`authorId`
       AND ( `author`.`name` = 'search string' OR `book`.`title` = 'search string');
  </code></pre>
  
  <p>The problem here is, if an author has no books, then the result is empty. Even if there is an author that matches the search criteria.</p>
  
  <p>I tried to set the include to <code>required: false</code>, which gives a <code>left outer join</code>. In that case, I get some not matching results. The where clause is omitted.</p>
  
  <p>How do I have to change my <code>sequelize</code> query, or what would be the proper <code>mysql</code> query?</p>