sei
Новичок
Всем привет!
На MySql не получается написать запрос тч корректно работал.
Задача заключается среди всех товаров выбрать товары с минимальным размером, и максимальной ценой для этого размера.
Есть 2е таблицы:
В ORACLE запрос делается с помощью оконных функций:
В MySQL такой запрос на ум приходят только с использованием переменных.
Подскажите пожалуйста если знаете.
На MySql не получается написать запрос тч корректно работал.
Задача заключается среди всех товаров выбрать товары с минимальным размером, и максимальной ценой для этого размера.
Есть 2е таблицы:
PHP:
//Товары:
CREATE TABLE IF NOT EXISTS `a` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;
INSERT INTO `a` (`id`, `title`) VALUES
(1, 'Товар1'),
(2, 'Товар2'),
(3, 'Товар3'),
(4, 'Товар4');
// Параметры товаров
CREATE TABLE IF NOT EXISTS `b` (
`a_id` int(11) NOT NULL,
`count` int(11) NOT NULL,
`size` int(11) NOT NULL,
`price` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `b` (`a_id`, `size`, `count`, `price`) VALUES
(1, 0, 1, 8),
(1, 0, 1, 10),
(1, 1, 2, 7),
(1, 1, 2, 15),
(2, 1, 2, 17);
PHP:
select *
from (
select t1.id,
t1.title,
t2.size_,
t2.price,
min(t2.size_) over(partition by t1.id) nMinSize,
max(t2.price) over(partition by t2.size_) nmaxPrice,
row_number() over(partition by t1.id order by 1) nrow
from a t1, b t2
where t1.id = t2.test_id) t
where t.nrow = 1 and nmaxPrice > 10 and nmaxPrice <= 20;
Подскажите пожалуйста если знаете.