|
Карма: 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 базу вешает даже при небольшой нагрузке.
|
|
|
|
|
Записан
|
|
|
|
|