Сложная сортировка в Mysql

201
06 апреля 2018, 16:35

У меня есть таблица с объектами objects

Так же есть различные услуги (трансфер, питание, доп. услуги) соответственно transfer, eat, dops

Связь между объектом и услугами осуществляется через промежуточные таблицы соответственно: transfer_for_objects, eat_for_objects, dops_for_objects

К объекту может быть закреплены 3 услуги, а может быть и ни одной. Задача такова: отсортировать объекты по количеству прикрепленных услуг в порядке убывания. У кого-нибудь есть какие то предположения как реализовать?

Answer 1
  1. Можно сделать выборку с 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

  2. Как и в первом варианте - только считать сумму не в mysql, а например сделать просто выборку по объектам с данными о кол-ве услуг, в последствии пройтись по массиву в ответе в помощью данной функции http://php.net/manual/en/function.uasort.php Выбор метода скорее лежит в плоскости быстродействия.

READ ALSO
Добавить кастомный функционал на сайт WordPress

Добавить кастомный функционал на сайт WordPress

Привет, я с вордпресом вообще на ВыПомогите советом как можно реализовать следующее

198
Как убрать ошибку 404 nginx в Yii2 (urlManager)?

Как убрать ошибку 404 nginx в Yii2 (urlManager)?

Страница работает -http://uk/basic/web/indexphp?r=site%2Fcontact Раскоментирываю строчки в Yii2

180
Обработка Telegram ответа на нажатие по кнопке

Обработка Telegram ответа на нажатие по кнопке

Пишу на php, использую для написания кода библиотеку https://githubcom/php-telegram-bot/core

259
Отправка письма с доп.информацией после оплаты в Яндекс.Кассе

Отправка письма с доп.информацией после оплаты в Яндекс.Кассе

Появилась необходимость отправлять письмо с допинформацией после оплаты клиентом в яндекс кассе

157