X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Сгруппировать записи по полю вернуть по одной случайной записи
fedornabilkin
fedornabilkin
Topic Starter сообщение 29.10.2013, 15:39; Ответить: fedornabilkin
Сообщение #1


Надо сгруппировать записи по полю position и вернуть по одной случайной записи из каждой группы.
Если, например, есть
две записи position = 'header'
три записи position = 'block'
две записи position = 'chat'

В итоге надо получить три записи. Одну из двух хедер, одну из трех блок и одну из двух чат.
Что-то я даже не знаю с чего начать.
Сгруппировать еще ладно, а как случайную из каждой группы выбрать не пойму.
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
fedornabilkin
fedornabilkin
Topic Starter сообщение 30.10.2013, 10:48; Ответить: fedornabilkin
Сообщение #2


Вчера пол дня пытался разобраться с запросом, но никак не получилось.
Поэтому опишу ситуацию подробнее.
Хочу сделать функционал для рекламодателей на сайте.
Пользователь создает рекламную кампанию и указывает место расположения баннера, грузит сам баннер и указывает урл.
Доступно три позиции: в шапке, в сайдбаре и в окне чата. Так как рекламных кампаний будет несколько на каждую позицию, то каждый раз необходимо выбирать случайную кампанию (строку записи в БД) на каждую позицию. Т.е. из всех строк надо выбрать случайную запись для отображения в шапке, в сайдбаре и в чате.
Если в запросе использовать группировку по полю position, то БД возвращает по одной первой записи всегда, а надо всегда разные, случайные.

Есть мысль выбрать все записи, перемешать и обработать форичем, но это на мой взгляд не эффективно. Тем более, если будет большое количество рекламных кампаний. Хотелось бы полностью переложить задачу на БД.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
1putnik
1putnik
сообщение 2.11.2013, 18:19; Ответить: 1putnik
Сообщение #3


По-моему лучше сделать 3 таблицы - 'header', 'block' и 'chat' и тогда будет легче сделать случайный выбор.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
fedornabilkin
fedornabilkin
Topic Starter сообщение 5.11.2013, 15:06; Ответить: fedornabilkin
Сообщение #4


По-моему лучше сделать 3 таблицы

Нет, это увеличивает количество запросов и нарушает принцип БД.
В итоге сделал так: получаю все записи в случайном порядке, прогоняю форичем и формирую массив, в которые попадают последние строки.
Если будет много записей, надо будет придумывать что-то другое.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
1putnik
1putnik
сообщение 6.11.2013, 22:50; Ответить: 1putnik
Сообщение #5


Нет, это увеличивает количество запросов и нарушает принцип БД.

3 таблицы по одному запросу.
Первый запрос из шапки сайта, второй из блока, третий из чата.
Выбирается одна случайная запись по id номеру из каждой таблицы.
А в вашем варианте будет меньше запросов?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
fedornabilkin
fedornabilkin
Topic Starter сообщение 18.11.2013, 12:12; Ответить: fedornabilkin
Сообщение #6


А в вашем варианте будет меньше запросов?
Согласись, один запрос экономнее, чем три и одна таблица компактнее, чем три.

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) 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


 



RSS Текстовая версия Сейчас: 29.3.2024, 13:10
Дизайн