INNER JOIN
Category.joins(:posts)
# SELECT categories.* FROM categories INNER JOIN posts ON posts.category_id = categories.id
LEFT OUTER JOIN
Client.includes("orders").where(first_name: 'Ryan', orders: { status: 'received' })
# SELECT count(DISTINCT clients.id) AS count_all FROM clients
# LEFT OUTER JOIN orders ON orders.client_id = client.id WHERE
# (clients.first_name = 'Ryan' AND orders.status = 'received')