@entermix

Where VS Having?

При помощи 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?
  • Вопрос задан
  • 396 просмотров
Решения вопроса 2
@Cheypnow
1. Where быстрее
2. Если ты будешь использовать группировку, то Where выполнится до группировки, а Having после. Собственно having и предназначен для использования с группировкой
Ответ написан
Комментировать
@402d
начинал с бейсика на УКНЦ в 1988
HAVING - применяется для фильтрации функций и столбцов сгруппированных при помощи GROUP BY указанных в SELECT
например типовая задача поиска дублей.
select name from table group by name having count(*)>1
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы