![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| capitan |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 602 Регистрация: 27.2.2005 Где: Москва Репутация: 2 Всего: 13 |
Вот бьюсь уже целый день, может кто подскажет?
Есть две таблицы table1 и table2. В table1 лежат категории книг - поля id_cat | name_cat В table2 лежат книги - поля id_book | name_book | id_cat Задача вывести все категории и в каждой категории рандомно 10 записей. Кто предложит наиболее рациональный вариант? Пока я дошёл до этого :
Выводит все записи, а мне нужно RUNDOM() и LIMIT 10 P.S. Работаю с PostgreSQL |
|||
|
||||
| skyboy |
|
||||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 14 Всего: 260 |
чесно говоря, думал, что можно обойтись только SQL, но сходу ничего не придумал.
А вот с использованием клиентской части задача вполне решаема. 1. Выполняем запрос.
Естественно, он нам вернет не "первые 10 для каждой категории", а все подряд книги, но со случайной сортировкой. 2. При обработке запроса РНР, учитываем, что для каждой категории выводим не более, чем MAX_RECORDS_COUNT записей(константа красивее, чем число 10).
|
||||
|
|||||
| capitan |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 602 Регистрация: 27.2.2005 Где: Москва Репутация: 2 Всего: 13 |
skyboy, А если в базе будет порядка 15000 книг у каждой категории? Не напряжёт ли это базу? И посещаемость будет у сайта 500 ? Пока я остановился на двух запросах. Первым выбираю категорий, а вторым рандомно по 10 записей. Но за идею спасибо.
P.s. была ещё идея с temp таблицой, которая заполняется по крону. Это сообщение отредактировал(а) capitan - 4.12.2007, 15:04 |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Базы Данных | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |