При помощи Kohana ORM можно делать такие выборки:
$session = ORM::factory('User')
->with('session')
->with('session:status')
->where('user_session_status.name', '=', 'active')
->find_all();
$session = ORM::factory('User')
->with('session')
->with('session:status')
->having('session:status:name', '=', 'active')
->find_all();
Результат будет один, но вот второй запрос выглядит более привлекательно. Второй запрос не сработает с where, потому, что:
SELECT user_session_statuses.name AS session:status:name
Это просто пример, но есть множество более сложных запросов, а поскольку Having выполняет пост-фильтрацию данных у меня возникает вопрос, какие могут быть подводные камни при использовании having вместо where?