powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выбрать с самым меньшим сроком доставки, самой маленькой ценой и самым большим наличием
3 сообщений из 3, страница 1 из 1
Выбрать с самым меньшим сроком доставки, самой маленькой ценой и самым большим наличием
    #39644189
MMG_Alpinist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток!
Есть таблица для временного хранения списка товаров:
CREATE TABLE `products` (
`item_number` varchar(15) NOT NULL,
`article` varchar(101) NOT NULL,
`price` float NOT NULL,
`srok_ot` smallint(6) NOT NULL,
`nal` mediumint(9) NOT NULL
) ENGINE=MEMORY DEFAULT CHARSET=utf8;

ALTER TABLE `products`
ADD PRIMARY KEY (`item_number`);

Необходимо для каждого `article` найти товар с самым маленьким сроком доставки при этом наименьшей ценой и наибольшим наличием, то есть аналог ORDER BY `srok_ot` ASC, `price` ASC, `nal` DESC

Пример таблицы:
item_number|article|price|srok_ot|nal
1|C110|1000|1|20
2|C110|500|2|30
3|C110|1500|1|50
4|C110|1000|1|20

Выбрать надо 1|C110|1000|1|20 или 4|C110|1000|1|20
...
Рейтинг: 0 / 0
Выбрать с самым меньшим сроком доставки, самой маленькой ценой и самым большим наличием
    #39644218
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FAQ: Выборка первой/последней записи в группах

MMG_AlpinistВыбрать надо 1|C110|1000|1|20 или 4|C110|1000|1|20
"Или" - недопустим. Алгоритм должен давать однозначный ответ. Если указанных условий недостаточно, надо их расширить дополнительным критерием, например "с наименьшим item_number".
...
Рейтинг: 0 / 0
Выбрать с самым меньшим сроком доставки, самой маленькой ценой и самым большим наличием
    #39644272
MMG_Alpinist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina FAQ: Выборка первой/последней записи в группах

MMG_AlpinistВыбрать надо 1|C110|1000|1|20 или 4|C110|1000|1|20
"Или" - недопустим. Алгоритм должен давать однозначный ответ. Если указанных условий недостаточно, надо их расширить дополнительным критерием, например "с наименьшим item_number".
Спасибо за ссылку, читал, но не смог приспособить для своей задачи. Решил задачу таким образом, но оптимальность под вопросом:
ALTER TABLE `products`
ADD KEY `index1` (`article`);

SELECT
`products_main`.`item_number`,
`products_main`.`article`,
`products_main`.`price`,
`products_main`.`srok_ot`,
`products_main`.`nal`
FROM
`products` AS `products_main`
WHERE
`products_main`.`item_number` = (SELECT
`products_vlozh`.`item_number`
FROM
`products` AS `products_vlozh`
WHERE
`products_vlozh`.`article` = `products_main`.`article`
ORDER BY
`products_vlozh`.`srok_ot` ASC,
`products_vlozh`.`price` ASC,
`products_vlozh`.`nal` DESC
LIMIT 1);
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выбрать с самым меньшим сроком доставки, самой маленькой ценой и самым большим наличием
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]