Вопрос для Гуру - прошу помочь найти закономерность выборки из БД

P
На сайте с 06.01.2009
Offline
601
508

Здравствуйте.

Есть таблица БД, условно она выглядит так

[ATTACH]127094[/ATTACH]

Прошу помочь найти закономерность, чтобы прописать условие выборки из БД и при этом на все товары "osnovnoy" ссылки распределились равномерно. Каждый товар (и osnovoy и dop) ссылается на 3 других документа согласно выборке.

При текущем положении дел, по понятным причинам товары с id 26,27,28 = получают больше всего веса.

текущий код такой


// мы уже получили id текущего товара $id_tovara
$result2 = mysql_query("SELECT id FROM `table` WHERE `id`>$id_tovara AND `tovar`='osnovnoy' ORDER BY `id` LIMIT 3");
while ($row = mysql_fetch_array($result2, MYSQL_NUM)) {
//...
}
$stopper = mysql_num_rows($result2);
$lim = 3-$stopper;
$result3 = mysql_query("SELECT id FROM `table` WHERE `id`>$id_tovara AND `tovar`='osnovnoy' ORDER BY `id` LIMIT $lim");
while ($row = mysql_fetch_array($result3, MYSQL_NUM)) {
//...
}
jpg 127094.jpg
P
На сайте с 06.01.2009
Offline
601
#1
postavkin:
Здравствуйте.
Есть таблица БД, условно она выглядит так
[ATTACH]127094[/ATTACH]
Прошу помочь найти закономерность, чтобы прописать условие выборки из БД и при этом на все товары "osnovnoy" ссылки распределились равномерно. Каждый товар (и osnovoy и dop) ссылается на 3 других документа согласно выборке.
При текущем положении дел, по понятным причинам товары с id 26,27,28 = получают больше всего веса.

текущий код такой

// мы уже получили id текущего товара $id_tovara
$result2 = mysql_query("SELECT id FROM `table` WHERE `id`>$id_tovara AND `tovar`='osnovnoy' ORDER BY `id` LIMIT 3");
while ($row = mysql_fetch_array($result2, MYSQL_NUM)) {
//...
}
$stopper = mysql_num_rows($result2);
$lim = 3-$stopper;
$result3 = mysql_query("SELECT id FROM `table` WHERE `id`>$id_tovara AND `tovar`='osnovnoy' ORDER BY `id` LIMIT $lim");
while ($row = mysql_fetch_array($result3, MYSQL_NUM)) {
//...
}

ps частично решил задачу, но прошу помочь.

Допустим текущая страница это страница товара с id=19.

Как найти номер элемента (либо его id, но желательно именно номер) у которого id меньше текущего, но tovar = osnovnoy

D
На сайте с 14.01.2007
Offline
153
#2

эммм...

SELECT * FROM table WHERE id<19 AND tovar='osnovnoy' ORDER BY id DESC

?

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий