Этот сайт не наркоманов. Это сайт программистов.

Добро пожаловать на Пыху!

Логин:
Пароль:
 

Нет прописки? Зарегистрируйся!

Новости

Пыха переехала на новый сервер, ура!

Краснодарское время: 25 Май, 2012, 05:47:53

Страниц: [1]
Печать
Автор Тема: Выборка n случайных товаров из категорий.  (Прочитано 187 раз)
0 Пользователей и 1 Гость смотрят эту тему.
armageddance    ↓ 
03 Ноябрь, 2011, 03:52:43
НЕ ХУЕТА! ХУЕТА!

Карма: 0
Сообщений: 29
Сила слова: 0

Есть таблица продуктов products, в ней товары имеют product_id и каждому товару соответствует категория category_id
Помогите выбрать n (или менее) случайных товаров из категорий.
Набросал SELECT * FROM products GROUP BY category_id, product_id, но тут запрос не учитывает ограничение в количестве n или менее.
 
В поиске на сайте подобной темы не нашел.
Благодарю заранее.
Спустя 1 минуту 39 секунд добавил
Да, кстати, вложенность категорий можно не учитывать.
Записан
Stasovsky    ↓ 
03 Ноябрь, 2011, 04:09:12 , спустя 16 минут 29 секунд
НЕ ХУЕТА! ХУЕТА!

Сенсей XD
Группа: Джедаи

Карма: 54
Сообщений: 3654
Сила слова: 1.48

LLIMIT? оО
Записан
armageddance    ↓ 
03 Ноябрь, 2011, 04:12:36 , спустя 3 минуты 24 секунды
НЕ ХУЕТА! ХУЕТА!

Карма: 0
Сообщений: 29
Сила слова: 0


LLIMIT? оО
Нет, limit мне просто ограничит выборку в целом, а нужно ограничить выбираемое количество товаров из всех категорий.
При n=4, например,
выборка SELECT * FROM products GROUP BY category_id, product_id LIMIT n приведет к тому, что я получу из первой категории 4 товара и 0 из всех остальных.
Записан
AlexB    ↓ 
03 Ноябрь, 2011, 04:20:56 , спустя 8 минут 20 секунд
НЕ ХУЕТА! ХУЕТА!

Группа: в ухо

Карма: 89
Сообщений: 3428
Сила слова: 2.6

ORDER BY RAND() LIMIT 4
что ли? или я толком не понял че надо ...
« Последнее редактирование: 03 Ноябрь, 2011, 04:20:56 от AlexB » Записан

phpdude    ↓ 
03 Ноябрь, 2011, 04:19:43 , спустя
НЕ ХУЕТА! ХУЕТА!

я - ЭМО
Группа: в ухо

Карма: 345
Сообщений: д-о-х-у-я!
Сила слова: 1.66

на чистом скл задача эта не решается. тут надо в пару запросов в любом случае минимум делать. я с одним профи долго выдумывал алгоритмы как такое развернуть)) "по быстрому" чтобы работало ни одного нормальнго алгоритма не пришло в голову.
Спустя 12 секунд добавил
если я правильно понял что ты хочешь :)
Записан

забанен. могу забанить других, пишите в личку
BEER. Helping ugly people have sex since 1862.
AlexB    ↓ 
03 Ноябрь, 2011, 04:24:53 , спустя 5 минут 10 секунд
НЕ ХУЕТА! ХУЕТА!

Группа: в ухо

Карма: 89
Сообщений: 3428
Сила слова: 2.6

GROUP BY category_id, product_id - весьма странная группировка сама по себе, точнее говоря совершенно бессмысленная
Записан

armageddance    ↓ 
03 Ноябрь, 2011, 04:25:34 , спустя 41 секунду
НЕ ХУЕТА! ХУЕТА!

Карма: 0
Сообщений: 29
Сила слова: 0


ORDER BY RAND() LIMIT 4
что ли? или я толком не понял че надо ...
 
Надо сделать так, чтобы запрос выдавал из каждой категории товаров одинаковое количество товаров, например, 4. Если в категории нет столько товаров, то тогда чтобы выдавалось меньшее товаров. Товары - рандомные.
 
[/quo

на чистом скл задача эта не решается. тут надо в пару запросов в любом случае минимум делать. я с одним профи долго выдумывал алгоритмы как такое развернуть)) "по быстрому" чтобы работало ни одного нормальнго алгоритма не пришло в голову.
Спустя 12 секунд добавил
если я правильно понял что ты хочешь :)
te]
Ну а в пару запросов как задачу побороть?
Записан
AlexB    ↓ 
03 Ноябрь, 2011, 04:35:29 , спустя 9 минут 55 секунд
НЕ ХУЕТА! ХУЕТА!

Группа: в ухо

Карма: 89
Сообщений: 3428
Сила слова: 2.6

А база mysql? Тогда, как сказал дуд ... сначала выбирать категории, и в цикле по каждой выбирать товары.
« Последнее редактирование: 03 Ноябрь, 2011, 04:35:29 от AlexB » Записан

Givi    ↓ 
03 Ноябрь, 2011, 09:39:15 , спустя 5 часов 3 минуты 46 секунд
НЕ ХУЕТА! ХУЕТА!

Группа: Адекваты

Карма: 42
Сообщений: 2305
Сила слова: 1.82

Ага, а перед тем как это все делать не плохо было бы научится более четче формировать вопросы/задачи, а то выходит какия-то хуйня: нужно что-то совсем не то, о чем вопрос.
Записан

Все, что говорят другие - неправда! До тех пор, пока ты сам в это не поверишь.
Если человек дурак, то... чур это не я!
Абырвалг    ↓ 
03 Ноябрь, 2011, 11:54:33 , спустя 2 часа 15 минут 18 секунд
НЕ ХУЕТА! ХУЕТА!

PHP Infected, симфоеб, маконенавистник
Группа: Джедаи

Карма: 80
Сообщений: 6096
Сила слова: 1.31

http://rmcreative.ru/blog/post/optimizatsija-order-by-rand
Спустя 53 секунды добавил
естественно комменты тоже нужно читать в обязательном порядке
Записан

PHP does the job since 1995
Пожалуйста, не надо делать двойные клики по ссылкам. Это создает избыточную нагрузку на сервер
Ivan    ↓ 
04 Ноябрь, 2011, 02:17:23 , спустя 2 часа 22 минуты 50 секунд
НЕ ХУЕТА! ХУЕТА!

Группа: Адекваты

Карма: 27
Сообщений: 1366
Сила слова: 1.98

Можно псевдоранд сделать - через IN, ранд генерируешь скриптом, а ORDER BY RAND базу вешает даже при небольшой нагрузке.
Записан

Страниц: [1]
Печать
 

Перейти в:  

Этот топик скрыли: adw0rd