@EVOSandru6

Как вывести через Active Record или запросом самые покупаемые товары?

Добрый день,

Есть 3 таблицы:

products
.id
.name
.price


orders
.id
.price


orders_products
.id
.order_id
.product_id
.qty
.price


Как Через связь orders->orders_products через (через Having By, полагаю) вытащить самые продаваемые товары по количеству из products, учитывая orders_products.qty?
  • Вопрос задан
  • 227 просмотров
Решения вопроса 1
kawabanga
@kawabanga
Сделайте 2 запроса, думаю будет проще, первый можно даже на чистом sql.

Пример первого:
'select product_id, sum(qty) as qty from orders_products
order by qty desc limit 10'
ps - не прочитал, что у вас postgresql, но идея та же.
дальше делаете маппинг массива и запрашиваете уже следующим запросом:
А второй запрос:
$modes = Products::find()->andWhere(['id'=>$product_id])->all();

Вариант одного запроса:
$models = Products::find()->select('*, sum(orders_products.qty) as qqty')
->innerJoin('orders_products', 'products.id=orders_products')
->orderBy('qqty desc')
->limit(10);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы