Задавайте вопросы, мы ответим
Вы не зашли.
Здравствуйте
Имеется таблица автозапчастей,
|kod|name|kolich|price|curency|post_id|
в которой прописаны артикулы запчастей, цены, валюты и поставщики.
Необходимо получить строки по одному конкретному поставщику, цена которых наименьшая среди предложений остальных поставщиков.
Цены хранятся в трех валютах - гривна(1), доллар(2), евро(3).
Пока все делаю вручную, продублировав исходную таблицу и в ней последовательно выполняю запросы.
Как сделать все одним запросом?
Спасибо.
Неактивен
curency - это валюьа? а откуда берется курс?
Лучше всего хранить цену в единой валюте, тогда получится очень простой запрос. В MariaDB есть для этой цели виртуальные колонки http://kb.askmonty.org/en/virtual-columns/
В текущей реализации придется делать вложенную конструкцию из if(), которая будет приводить цену к единой валюте.
Неактивен
vasya написал:
получится очень простой запрос
Скопировал в отдельную таблицу, где привел к единой валюте.
Просьба привести упомянутый Вами простой запрос.
Неактивен
select post_id from tablename where name='..' group by post_id order by `цена в единой валюте` desc limit 1;
Неактивен
vasya, спасибо за помощь, но это не совсем тот результат, который мне нужен.
Возможно я не достаточно подробно сформулировал мою проблему, пробую еще раз:
Есть таблица товаров `prices` id|kod|name|kolich|price|curency|post_id|,
в которую загружены прайсы нескольких поставщиков,
где 'kod' - код запчасти (товара), может встречаться одинаковый у разных поставщиков 'post_id' с разной ценой 'price'.
Необходимо для одного конкретного поставщика 'post_id' выбрать строки его прайса, у которых цена запчасти по сравнению с такими же кодами запчастей по остальным поставщикам наименьшая.
Прошу простить за предыдущую неполную постановку задачи.
Спасибо за помощь
Неактивен
Svap написал:
Необходимо для одного конкретного поставщика 'post_id' выбрать строки его прайса, у которых цена запчасти по сравнению с такими же кодами запчастей по остальным поставщикам наименьшая.
Попадет ли в конечную выборку результат если для конкретной детали 'kod' нашего поставщика 'post_id':
а) нет совпадения у других поставщиков?
б) одинаковая минимальная цена у нескольких поставщиков?
Неактивен
пункты а, б -> Да
Насчет случая, когда нет совпадения у других поставщиков, было бы неплохо подсчитывать количество деталей с одинаковым 'kod'.
Но это уже украшательства...
Неактивен
Лучше сделать в несколько запросов. Сначала
select kod from tablename where post_id='конкретный поставщик'
затем в цикле
select min(price) from tablename where kod='значение из первого запроса';
select .. from tablename where kod='значение из первого запроса' and price='минимальная цена из предыдущего запроса' and post_id='конкретный поставщик';
Если хотите запихнуть все в один запрос смотрите http://sqlinfo.ru/forum/viewtopic.php?id=1742 (читать до конца)
Неактивен