У меня есть таблица с объектами objects
Так же есть различные услуги (трансфер, питание, доп. услуги) соответственно transfer, eat, dops
Связь между объектом и услугами осуществляется через промежуточные таблицы соответственно: transfer_for_objects, eat_for_objects, dops_for_objects
К объекту может быть закреплены 3 услуги, а может быть и ни одной. Задача такова: отсортировать объекты по количеству прикрепленных услуг в порядке убывания. У кого-нибудь есть какие то предположения как реализовать?
Можно сделать выборку с 3мя join
, которая будет агрегировать в виртуальное поле сумму услуг привязанных к конкретному объекту, в последствии по этому полю сделать orderBy('field_name', 'desc')
приблизительный пример.
SELECT *, COUNT(tfo.id) + COUNT(efo.id) + COUNT(dfo.id) AS services_total_count FROM objects AS obj JOIN transfer_for_objects AS tfo ON tfo.obj_id = obj.id JOIN eat_for_objects AS efo ON efo.obj_id = obj.id JOIN dops_for_objects AS dfo ON dfo.obj_id = obj.id WHERE 1 ORDER BY obj.services_total_count
Как и в первом варианте - только считать сумму не в mysql, а например сделать просто выборку по объектам с данными о кол-ве услуг, в последствии пройтись по массиву в ответе в помощью данной функции http://php.net/manual/en/function.uasort.php Выбор метода скорее лежит в плоскости быстродействия.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Привет, я с вордпресом вообще на ВыПомогите советом как можно реализовать следующее
Страница работает -http://uk/basic/web/indexphp?r=site%2Fcontact Раскоментирываю строчки в Yii2
Пишу на php, использую для написания кода библиотеку https://githubcom/php-telegram-bot/core
Появилась необходимость отправлять письмо с допинформацией после оплаты клиентом в яндекс кассе