Суть вопроса такова.
Есть у меня некая таблица c товарами
CREATE TABLE `test` (
`productID` int(11) NOT NULL AUTO_INCREMENT,
`product_code` varchar(80) NOT NULL,
`brand` varchar(80) NOT NULL,
`price` float NOT NULL,
`day` int(11) NOT NULL,
`sid` int(11) NOT NULL,
PRIMARY KEY (`productID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=11 ;
--
-- Дамп данных таблицы `test`
--
INSERT INTO `test` (`productID`, `product_code`, `brand`, `price`, `day`, `sid`) VALUES
(3, '111', 'MANN', 100, 5, 5),
(4, '111', 'MANN', 150, 1, 5),
(5, '222', 'MANN', 100, 0, 5),
(6, '222', 'FILTRON', 200, 1, 5),
(7, '222', 'FILTRON', 180, 5, 5),
(8, '222', 'UFI', 150, 0, 5),
(9, '222', 'UFI', 140, 0, 5),
(10, '222', 'UFI', 250, 20, 5);
Как видите в дампе, есть несколько сочетаний код + бренд.
Так вот мне нужно достать из этой таблицы, товары (по одной записи), у которых самый быстрый срок поставки (поле
day)
Я составил вот такой запрос:
SELECT a.*
FROM test a
INNER JOIN
(
SELECT product_code, brand, MIN(day) day2
FROM test WHERE sid = 5
GROUP BY product_code, brand
)b ON a.product_code = b.product_code AND
a.brand = b.brand AND
a.day = b.day2
WHERE sid = 5
Результат получаю:
| PRODUCTID | PRODUCT_CODE | BRAND | PRICE | DAY | SID |
|-----------|--------------|---------|-------|-----|-----|
| 4 | 111 | MANN | 150 | 1 | 5 |
| 5 | 222 | MANN | 100 | 0 | 5 |
| 6 | 222 | FILTRON | 200 | 1 | 5 |
| 8 | 222 | UFI | 150 | 0 | 5 |
| 9 | 222 | UFI | 140 | 0 | 5 |
Последние строки одинаковы, по к-ву дней (
day), каким способ мне доставать лишь одну из этих строк, так чтоб, учитывалась и самая дешева цена (
price). Пробовал использовать GROUP BY, но в таком случае, оставалась запись первая которая попалась в таблице.
Хочу получить такой результат :
| PRODUCTID | PRODUCT_CODE | BRAND | PRICE | DAY | SID |
|-----------|--------------|---------|-------|-----|-----|
| 4 | 111 | MANN | 150 | 1 | 5 |
| 5 | 222 | MANN | 100 | 0 | 5 |
| 6 | 222 | FILTRON | 200 | 1 | 5 |
| 9 | 222 | UFI | 140 | 0 | 5 |
Надеюсь у меня получилось объяснить, что я хочу получить в итоге.
Код на
sqlfiddle
Заранее благодарен за помощь.