Выбор мин цены из 1 таблицы среди уник.произв. c сортировкой по дате

тимофей

Новичок
Выбор мин цены из 1 таблицы среди уник.произв. c сортировкой по дате

Существует таблица цен:

PHP:
  `pr_id` int(16) NOT NULL auto_increment,
  `pr_zavod_id` int(16) default NULL,
  `pr_tovar_id` int(16) default NULL,
  `pr_cost` float(10) NOT NULL default '0',
  `pr_time_add` int(16) default NULL,
предисловие:
у товара (pr_tovar_id) может быть несколько поставщиков (pr_zavod_id)
которого цена на товар (pr_cost) обновляется (точнее добавляется в эту таблицу) еженедельно
имея соответственно больший (pr_time_add) в секундах.

Добавляется, а не обновляется для того чтобы ежемесячно делать анализ ценовой политики поставщиков в отношении товаров.
Задача: Выбрать минимальную цену среди всех поставщиков по их последним записям в базе.
 

DiMA

php.spb.ru
Команда форума
select max(concat(дата, цена, поставщик)) as m
group by поставщик
order by m DESC
limit 1

в мане готовый пример
(я написал с ошибками, додумывай сам)
 

тимофей

Новичок
DiMA
спасибо

-~{}~ 14.07.09 08:06:

DiMA
так и не разобрался с concat :(((
решил задачу таk:

PHP:
$sql = "SELECT pr_zavod_id, pr_cost FROM price s1 WHERE pr_tovar_id = 65756 AND pr_cost=( SELECT MIN(s2.pr_cost) FROM price s2 WHERE s1.pr_id = s2.pr_id)  GROUP BY pr_cost;";
 

prolis

Новичок
тимофей
думай ещё, тебе нужны минимумы из последних записей
 

DiMA

php.spb.ru
Команда форума
тимофей
ну, в 2 запроса то любой сделать может :)
осваивай способ с CONCAT, это нужный костыль для подобных задач
 

тимофей

Новичок
PHP:
select max(concat(pr_add, pr_cost, pr_zavod_id)) as m
FROM price WHERE pr_tovar_id = 3345
GROUP BY pr_zavod_id
ORDER BY m LIMIT 1
выводит правильно (минимальную цену из всех уникальных поставщиков) но, не могу понять как мне разделить результат типа (1247443766330116) из которых: последние 3 цифры pr_zavod_id, ещё 3 цифры та самая цена и остfльное pr_add,!!!!
 

prolis

Новичок
я бы так:
[sql]
select p.* from price p,
(
select max(pr_id) as pr_id from price
where pr_tovar_id = 3345
group by pr_zavod_id
) t
where p.pr_id=t.pr_id
order by p.pr_cost
limit 1
[/sql]
 

тимофей

Новичок
prolis
спасибо, а то я уже начал регулярными выражениями результат выдирать... но вариант concat нужно подразобрать... интересно
 
Сверху