Помощник
|
Сгруппировать записи по полю вернуть по одной случайной записи |
fedornabilkin
|
Сообщение
#1
|
||
|
|
||
|
|||
fedornabilkin
|
Сообщение
#2
|
|
Вчера пол дня пытался разобраться с запросом, но никак не получилось.
Поэтому опишу ситуацию подробнее. Хочу сделать функционал для рекламодателей на сайте. Пользователь создает рекламную кампанию и указывает место расположения баннера, грузит сам баннер и указывает урл. Доступно три позиции: в шапке, в сайдбаре и в окне чата. Так как рекламных кампаний будет несколько на каждую позицию, то каждый раз необходимо выбирать случайную кампанию (строку записи в БД) на каждую позицию. Т.е. из всех строк надо выбрать случайную запись для отображения в шапке, в сайдбаре и в чате. Если в запросе использовать группировку по полю position, то БД возвращает по одной первой записи всегда, а надо всегда разные, случайные. Есть мысль выбрать все записи, перемешать и обработать форичем, но это на мой взгляд не эффективно. Тем более, если будет большое количество рекламных кампаний. Хотелось бы полностью переложить задачу на БД. |
|
|
1putnik |
2.11.2013, 18:19;
Ответить: 1putnik
Сообщение
#3
|
|
По-моему лучше сделать 3 таблицы - 'header', 'block' и 'chat' и тогда будет легче сделать случайный выбор.
|
|
|
fedornabilkin
|
Сообщение
#4
|
|
По-моему лучше сделать 3 таблицы Нет, это увеличивает количество запросов и нарушает принцип БД. В итоге сделал так: получаю все записи в случайном порядке, прогоняю форичем и формирую массив, в которые попадают последние строки. Если будет много записей, надо будет придумывать что-то другое. |
|
|
1putnik |
6.11.2013, 22:50;
Ответить: 1putnik
Сообщение
#5
|
|
Нет, это увеличивает количество запросов и нарушает принцип БД. 3 таблицы по одному запросу. Первый запрос из шапки сайта, второй из блока, третий из чата. Выбирается одна случайная запись по id номеру из каждой таблицы. А в вашем варианте будет меньше запросов? |
|
|
fedornabilkin
|
Сообщение
#6
|
|
|
А в вашем варианте будет меньше запросов? Согласись, один запрос экономнее, чем три и одна таблица компактнее, чем три.
|
|
|
||
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
iMonetizeIt - CPA-офферы и таргетинговые смартлинки на одной платформе! | 28 | iMonetizeIt | 12557 | 6.11.2020, 21:08 автор: iMonetizeIt |
|
iMonetizeIt: CPA-партнерка и смартлинка на одной платформе! Монетизируй с нами! | 70 | iMonetizeIt_hb | 16513 | 20.7.2020, 18:06 автор: -iMonetizeIt- |
|
Требуется несколько человек для записи Интересная работа |
5 | sheva7 | 2034 | 29.4.2019, 20:45 автор: Arwis |
|
Влетаем в ТОП на одной семантике! СЯ, готовые ТЗ, запросы с низкой конкуренцией по Мутагену. | 27 | puteviy | 11865 | 31.8.2016, 18:45 автор: GrayZOR |
|
Влетаем в ТОП на одной семантике! СЯ, готовые ТЗ, запросы с низкой конкуренцией | 19 | Puteviy | 3659 | 29.8.2016, 17:57 автор: ShowPrint |
Текстовая версия | Сейчас: 29.3.2024, 13:10 |