Страница 1 из 1

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

Добавлено: 2021.03.03, 12:19
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:

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

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

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

Добавлено: 2021.03.03, 14:03
SaintRu
rak писал(а): 2021.03.03, 12:46 почему нельзя? HAVING count1 > 2
Спасибо! Походу надо SQL подучить :oops: