@neonox

Как составить SQL запрос?

Прошу помочь направив в нужное направление.
Есть две таблицы

t1:
parent_id (родительский продукт)
product_id (продукты привязанные к родителю)

t.2
product_id (продукт)
price (цена)

Пример одного родителя
parent product price
"1" "23538" "4031,0000"
"1" "23537" "5300,0000"
"1" "23536" "5607,0000"
"1" "1" "7000,0000"
"6" "23557" "4031,0000"
"6" "23556" "5300,0000"
"6" "23555" "5607,0000"
"6" "6" "7000,0000"

Мне надо получить вывод самых дешевых продуктов с привязкой к родителю. Не могу понять, как это реализовать.
Т.е. по моему примеру выше, должен вернуться

parent product price
"1" "23538" "4031,0000"
"6" "23557" "4031,0000"
  • Вопрос задан
  • 140 просмотров
Пригласить эксперта
Ответы на вопрос 1
@alexalexes
Зачем вам таблица t1?
У продукта могут быть несколько родителей?
Если нет, то t1 избыточна, вам будет достаточно в каждой записи продукта указывать, кто у нее parent.
Если нужно найти самый дешевый продукт в пределах одного родителя, то делается это так:
select *
from (select parent, product,
                    rank() over (partition by parent order by price) price_rnk
           from t2
         )  a
where price_rnk = 1

Клауза over partition поддерживается mySQL не ниже 8 версии. Самым распространенным версиям (5 или 6, не помню), нужно делать велосипед из пользовательских переменных @.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы