Сегодня возникла задача : выбрать самую старую и самую свежую запись из БД. Нужно это было, для того, что бы найти товары, цены корых максимально подскачили или упали с самого начала продаж. Для этого, я заносил изменения цен в отдельную таблицу.

CREATE TABLE IF NOT EXISTS tovar_price (id int(8) NOT NULL AUTO_INCREMENT,tovar_id int(8) NOT NULL DEFAULT 0, /*товар, к которому относится цена*/price float NOT NULL, /*сама цена*/UPDATE_TIME date NOT NULL, /*дата занесения цены в базу*/PRIMARY KEY (id)) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=0;

Вариантов решения несколько, однако, хотелось все запихать в 1 запрос.

Вот, что получилось.

Запрос из Kohana

$prices=DB::query(Database::SELECT, "(SELECT * FROM tovar_price where tovar_id=:tovarid order by UPDATE_TIME LIMIT 1)UNION(SELECT * FROM tovar_price where tovar_id=:tovarid order by UPDATE_TIME DESC LIMIT 1)")->parameters(array(":tovarid"=>$tovar["id"]))->execute()->as_array();

Чистый Sql

Опустим все ненужные условия. Выборка идет из таблицы цен на товары.

/*Выбираем все поля из таблицы и сортируем их (order by) по дате, одновременно ограничивая выдачу до 1 строки (LIMIT 1) */(SELECT * FROM tovar_price order by UPDATE_TIME LIMIT 1)UNION(SELECT * FROM tovar_price order by UPDATE_TIME DESC LIMIT 1)

В данном примере, мы просто объединили 2 SELECT запроса в 1 с помощью оператора UNION

Часть выдачи

Array([0] => Array([id] => 447[tovar_id] => 246[price] => 13500[UPDATE_TIME] => 2013-11-08)[1] => Array([id] => 1825[tovar_id] => 246[price] => 13400[UPDATE_TIME] => 2013-12-25))

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

Наши клиенты

Большая часть наших клиентов становится постоянными, мы работаем уже 8 лет и за нашими плечами накопился большой опыт, как в разработке сайтов, так и в работе с людьми. Закажите создание сайта в нашей фирме и вы не будете разочарованы!
Создание сайта Доставки Суши
Создание сайта для Терминал Комплект
Создание сайта мебельной фабрики
Создание сайта центра Сони
Создания сайта для СЦ Дителл
Создание интернет магазина VzeZakazal
Разработка сайта галереи
Создание сайта каталога одежды
Наши приемущества
Сайт носит информационный характер и не является публичной офертой