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 запрос?
Есть таблица изменений цен на товары.
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 запрос?