[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Выбрать из БД случайные записи и...
lop_atin
Здравствуйте, у меня в БД есть более 100 записей из нее нужно доставить 8 случайных записей и "выстроить" в нужном порядке по столбцу price...

Делаю вот так, но не работает (нечего не выводит):

$result_groups = mysql_query("SELECT * 
FROM `order_group`
(SELECT `id`, `price`, `photo` ORDER BY RAND() FROM `order_group` LIMIT 8)
ORDER BY `price`"
,$db);
DedMorozzz
"SELECT * 
FROM `order_group`
(SELECT `id`, `price`, `photo` ORDER BY RAND() FROM `order_group` LIMIT 8)
ORDER BY `price`"

замени на
"SELECT * 
FROM (SELECT `id`, `price`, `photo` ORDER BY RAND() FROM `order_group` LIMIT 8)
ORDER BY `price`"


Но ORDER BY RAND не очень хорошо работает. Но если таблица небольшая - то пойдёт

_____________
Если не говорить пользователям, что Linux это "Сложно и страшно", то им совершенно всё равно, в чём не разбираться
lop_atin
Цитата (DedMorozzz @ 20.06.2013 - 13:52)
"SELECT * 
FROM `order_group`
(SELECT `id`, `price`, `photo` ORDER BY RAND() FROM `order_group` LIMIT 8)
ORDER BY `price`"

замени на
"SELECT * 
FROM (SELECT `id`, `price`, `photo` ORDER BY RAND() FROM `order_group` LIMIT 8)
ORDER BY `price`"


Но ORDER BY RAND не очень хорошо работает. Но если таблица небольшая - то пойдёт

Да, я тоже читал что RAND плохо работает с большими БД, но увы не знаю как без него можно обойтись...

Попробовал как ты говоришь, не работает :(

$result_groups = mysql_query("SELECT * 
FROM (SELECT `id`, `price`, `photo` ORDER BY RAND() FROM `order_group` LIMIT 8)
ORDER BY `price`"
,$db);
Winston
SELECT * 
FROM (SELECT `id`, `price`, `photo` FROM `order_group` ORDER BY RAND() LIMIT 8) AS t
ORDER BY `price`
Valick
Цитата
RAND плохо работает с большими БД, но увы не знаю как без него можно обойтись...

$query = "SELECT FLOOR(COUNT(*) * RAND()) FROM `table`";
$res = mysql_query($query);
$rand = mysql_result($res,0);
//
Формируем запрос на выборку случайной записи
$query = "SELECT * FROM `table` LIMIT $rand, 1";


_____________
Стимулятор ~yoomoney - 41001303250491
lop_atin
Цитата (Winston @ 20.06.2013 - 14:11)
SELECT * 
FROM (SELECT `id`, `price`, `photo` FROM `order_group` ORDER BY RAND() LIMIT 8) AS t
ORDER BY `price`

Спасибо все работает!) В двух словах расскажешь в чем проблема была, чтобы я в будущем не допускал ошибку?)
lop_atin
Цитата (Valick @ 20.06.2013 - 14:25)
Цитата
RAND плохо работает с большими БД, но увы не знаю как без него можно обойтись...

$query = "SELECT FLOOR(COUNT(*) * RAND()) FROM `table`";
$res = mysql_query($query);
$rand = mysql_result($res,0);
//
Формируем запрос на выборку случайной записи
$query = "SELECT * FROM `table` LIMIT $rand, 1";

Спасибо, буду разбираться !
Winston
Цитата (lop_atin @ 20.06.2013 - 13:33)
В двух словах расскажешь в чем проблема была, чтобы я в будущем не допускал ошибку?)

Не в том месте было прописано ORDER BY RAND()
lop_atin
Цитата (Winston @ 20.06.2013 - 14:39)
Цитата (lop_atin @ 20.06.2013 - 13:33)
В двух словах расскажешь в чем проблема была, чтобы я в будущем не допускал ошибку?)

Не в том месте было прописано ORDER BY RAND()

Тю... точно)
DedMorozzz
А веть действительно, даже не проверил где стоит.
Обратил внимание, только на то, что начальная выборка не из под запроса делается

_____________
Если не говорить пользователям, что Linux это "Сложно и страшно", то им совершенно всё равно, в чём не разбираться
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.