Тема: Поиск по минимальному значению

Добрый день Hanut. Помогите пожалуйста, ума не хватает самому. Вот у меня такая задача - создать запрос к БД, где я выбираю определенный товар, и мне выводится поставщик который предлагает этот товар по минимальной цене. На данный момент, у меня есть форма анкеты которую поставщик заполняет через интернет и там указывает категории товаров которые он поставляет, анкета добавляется в базу. У меня есть запросы к примеру поиск по городам, по роду деятельности и т.д. Но вот как сделать такой запрос который бы показывал минимальную цену. То есть я так думаю может тогда расширить анкету где поставщик бы указывал цены(например холодильное оборудование ОТ 10 тыс.руб.), но тут опять же непонятно - ведь в анкете товары по категориям - холодильное оборудование, системы освещения, продукты питания - это отдельные большие категории которые включают в себя конкретные товары. Возможно придется делать отдельную большую форму где будет описываться цена на каждый товар и поставщик ее заполняет диапозоном к примеру:
холодильники  от 10 000р до 25 000р. Но это получается надо связывать анкету и этот прайс лист. Или как? Посоветуйте пожалуйста что то я не въезжаю. Спасибо.

2

Re: Поиск по минимальному значению

Сегодня на простом примере пробовал команду BETWEEN, и думаю наверное придется через нее делать. То есть пользователь выбрал категорию товара, потом выбрал конкретный товар из этой категории, указал желаемый диапазон цены и ему выводятся поставщики которые поставляют данный товар в таком ценовом дипазоне. Вот только как это организовать - пока сложно представляю...

3

Re: Поиск по минимальному значению

Если в таблице есть поле содержащее цену, то вывести товар с минимальной ценой очень просто:

SELECT * FROM `table` ORDER BY `price` LIMIT `;

В остальном, попробуйте конкретизировать задачу, потому что сейчас я даже не знаю чем помочь.

4

Re: Поиск по минимальному значению

Спасибо. Постораюсь более внятно изложить. Вообщем проблема в том что как я уже говорил товары разбиты по категориям, например категория - "Продукты питания" которая включает в себя конкретные виды товаров такие как, к примеру - "Хлеб","Молоко","Сыр" и т.д. И таких категорий несколько, и каждая из них включает в себя конкретные товары. И вот как я представляю это - поставщик заполняя анкету в каждой категории и по каждому товару пишит свою минимальную цену, к примеру:
ПРОДУКТЫ ПИТАНИЯ
Хлеб от 15р
Молоко от 20р
Сыр от 25р
И так он заполняет минимальную цену на конкретный товар по каждой категории.
Это все заносится в базу (я могу это сделать но только в одну огромную таблицу, так наверное и запутаться можно )
Потом пользователь БД со своей стороны, выбирает категорию, потом конкретный товар, и устанавливает диапазон цены:
к примеру:
Хлеб - от 15р до 25р
И результатом запроса должны быть те поставщики которые предоставляют хлеб в этом ценовом отрезке.
Как вы посоветуете это организовать, как будет лучше и удобнее на ваш взгляд? только если можно более простыми способами. Благодарю. Извиняюсь если муторно описал.

5

Re: Поиск по минимальному значению

Я не понимаю зачем нужны диапазоны, если есть товар и его цена?

Пример:
Таблица категорий товаров будет из 2 полей - идентификатор id и название категории name. id = 1, name = "Продукты".
Таблица наименований товаров будет из 3 полей - идентификатор id, название товара name и ключ категории cat_id - id = 1, name = "хлеб", cat_id = 1.
И наконец, таблица цен товаров будет из 4 полей - идентификатор id, цена price, ключ наименования товара product_id, ключ принадлежности определенному поставщику shop_id. id = 1, price = 30, product_id = 1, shop_id = 1.
Таблицу продавца вы можете сами составить.

С такой структурой данных можно выбрать и добавить любой вид товара.

6

Re: Поиск по минимальному значению

О Спасибо. А на счет этих диапозонов я представлял так что - множество поставщиков ведь заполняют разные цены. То есть у кого-то минимальная цена хлеба 10р у кого-то 16р у кого-то 18р и т д. А мы задаем ценовой отрезок по которому для нас будет выгодно приобретать.  к примеру хлеб от 10 до 16р. Или это бредово?
Спасибо.
И еще тупой вопрос. Вот я вроде понимаю эту связь с таблицами которые вы написали. Но как ее делать? с помощью запросов что-ли? Можно маленький наглядный пример в котором бы задействовались все вот эти таблицы что вы привели или где можно посмотреть про такие сложные запросы?

7

Re: Поиск по минимальному значению

Гриша сказал:

Вот я вроде понимаю эту связь с таблицами которые вы написали. Но как ее делать? с помощью запросов что-ли?

Для объединения таблиц в запросе, используется конструкция JOIN. В данном случае, объединяются три таблицы и выводится название категории, название продукта и его цена.

SELECT
`cat`.`name` AS `cat_name`,
`product`.`name` AS `product_name`,
`product_price`.`price`
FROM `cat` JOIN (`product`, `product_price`)
ON (`cat`.`id` = `product`.`cat_id` AND `product`.`id` = `product_price`.`product_id`)

Ценовой диапазон подсчитывать можно, но нет необходимости вводить его в анкете, если есть цена товара. По цене товара можно без труда понять в каком диапазоне он находится.