SQL. Выборка цен на товары по дате

stts

Новичок
SQL. Выборка цен на товары по дате

Есть таблица изменений цен на товары.
id | name | price | date

name - товар (индекс товара из таблицы товаров)
date - дата изменения цены
price - собственно цена.

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

Необходимо выбрать по одной записи для каждого товара, дата в которых будет максимально приближена к заданной дате.
Т.е. необходимо узнать текущую стоимость для каждого товара на заданную дату.

я делаю следующим образом:

$time - заданная дата.

$query = mysql_query("SELECT MAX(`date`) as `date`, `name` FROM `zapros` WHERE `date` <= '$time' GROUP BY `name`");
if (mysql_num_rows($query)) {
while ($row = mysql_fetch_array($query)) {
$query2 = mysql_query("SELECT * FROM `zapros` WHERE `date` = '{$row['date']}' AND `name` = '{$row['name']}' GROUP BY `name`");
if (mysql_num_rows($query2)) {
while ($row2 = mysql_fetch_array($query2)) {
//echo "name = {$row2['name']} id = {$row2['id']}, ".date("j.m.Y", $row2['date'])."<br>";
// тут мои манипуляции с ценами
}
mysql_free_result($query2);
}
}
mysql_free_result($query);
}

работает нормально, НО в случае большого количества товаров будет работать очень и очень долго.
Помогите пожалуйста.
Как мне свести это в 1 SQL запрос?
 

stts

Новичок
А без использования подзапроса это можно сделать в один запрос?
 

stts

Новичок
Всем спасибо. Разобрался.
Если кому интересно, то воспользовался вот такими методами:
http://phpclub.ru/mysql/doc/example-maximum-column-group-row.html
 
Сверху