Имеется следующая таблица товаров
Таблица: products
её колонки
products_id - идентификатор продукции
repairs_id - идентификатор запчасти
products_price - цена продукции
shops_id - магазин
shops_rating - рейтинг магазина
данные:
mysql> select * from products;
+-------------+------------+----------------+----------+--------------+
| products_id | repairs_id | products_price | shops_id | shops_rating |
+-------------+------------+----------------+----------+--------------+
| 1 | 1 | 100 | 1 | 9 |
| 2 | 1 | 50 | 2 | 5 |
| 3 | 2 | 100 | 1 | 9 |
| 4 | 2 | 75 | 3 | 10 |
+-------------+------------+----------------+----------+--------------+
4 rows in set (0.00 sec)
Нужно выбрать товары тех магазинов у которых рейтинг выше всего, если рейтинг магазинов одинаков, выборку производить из магазинов у которых рейтинг выше всего и цена самая низкая на данный товар
хочу получить следующие
+-------------+------------+----------------+----------+--------------+
| products_id | repairs_id | products_price | shops_id | shops_rating |
+-------------+------------+----------------+----------+--------------+
| 1 | 1 | 100 | 1 | 9 |
| 4 | 2 | 75 | 3 | 10 |
+-------------+------------+----------------+----------+--------------+
Можно это как то организовать с помощью SQL запроса?
Есть следующий SQL код
mysql> SELECT
-> t1.products_id,
-> t1.repairs_id, t1.products_price,
-> t1.shops_id, t1.shops_rating
-> FROM
-> (SELECT repairs_id, MIN(products_price) AS products_price
-> FROM `products`
-> GROUP BY repairs_id
-> ) t2
-> JOIN
-> `products` t1 USING(repairs_id, products_price);
+-------------+------------+----------------+----------+--------------+
| products_id | repairs_id | products_price | shops_id | shops_rating |
+-------------+------------+----------------+----------+--------------+
| 2 | 1 | 50 | 2 | 5 |
| 4 | 2 | 75 | 3 | 10 |
+-------------+------------+----------------+----------+--------------+
2 rows in set (0.00 sec)
Оно выбирает только те товары, у которых цена самая низкая, рейтинг магазинов не учитывается, нужно как то закрутить его)))