Подсчет кол-ва полей в связанной таблице

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
SaintRu
Сообщения: 64
Зарегистрирован: 2020.05.13, 11:22
Контактная информация:

Подсчет кол-ва полей в связанной таблице

Сообщение SaintRu »

Здравствуйте. Столкнулся с такой проблемой.
Есть главная сущность Stays и связанная с ней 1 к многим Bedrooms
Задача - Сделать выборку только тех stays у которых кол-во bedrooms равно, например, 2

Как сделать сам запрос нигде не нашел:
дошел до того, что сначала делаем выборку:

Код: Выделить всё

SELECT stays.*
     , COUNT(bedrooms.stay_id) count1
FROM booking_stays stays
JOIN booking_stays_comfort_room_assign bedrooms ON stays.id = bedrooms.stay_id 
GROUP BY stays.id
а затем ч/з foreach отсеиваем по полю count1, т.к. COUNT() нельзя воткнуть в Условие.
Но у меня ActiveDataProvider и как отсеять не понятно, там же пагинация и сортировка ... все накроется ...
Есть решение добавить поле count1 в сущность Stays, которое пересчитывать каждый раз при изменении Bedrooms.
Работать будет быстрее, и выборку намного проще сделать, но кажется это такой костыль, за который расстреляют :lol:
Мой старт-ап ;) https://koenigs.ru

rak
Сообщения: 2128
Зарегистрирован: 2010.11.02, 23:40
Контактная информация:

Re: Подсчет кол-ва полей в связанной таблице

Сообщение rak »

SaintRu писал(а):
2021.03.03, 12:19
т.к. COUNT() нельзя воткнуть в Условие.
почему нельзя? HAVING count1 > 2

SaintRu
Сообщения: 64
Зарегистрирован: 2020.05.13, 11:22
Контактная информация:

Re: Подсчет кол-ва полей в связанной таблице

Сообщение SaintRu »

rak писал(а):
2021.03.03, 12:46
почему нельзя? HAVING count1 > 2
Спасибо! Походу надо SQL подучить :oops:
Мой старт-ап ;) https://koenigs.ru

Ответить