Эксперт по компьютерным сетямЭксперт NIX
12411 / 7248 / 762
Регистрация: 09.09.2009
Сообщений: 28,280
1

Не знаю, как реализовать "приоритет" (или "вес")

23.05.2017, 12:30. Показов 736. Ответов 1
Метки нет (Все метки)

Нужно создать базу для приложения, выдающего ссылки с рекламными банерами.
С одной стороны есть баннеры, с другой сайты, их запрашивающие
мысль была такова - создать в базе две таблицы:

1. Id, Banner_file_name, last_shown (время последнего показа), referal (поле, отвечающее за "набор сайтов, где этот баннер должен показываться", counter (счетчик показов), (ну и всякая там мишура, типа поля типа "описание", и пр., несущественно)

2. Id, Site_address, описание (чисто информация для человеков)

в приложение приходит запрос с "адресом сайта" (из второй таблицы). Дальнейший мой ход рассуждений был таков:

из 1-й таблицы по соответствию site_address = referal выбирается строка С САМЫМ СТАРЫМ ВРЕМЕНЕМ ПОСЛЕДНЕГО ПОКАЗА, вынимается имя файла с банером, отдается назад в приложение, после чего обновляется счетчик "время последнего показа" (за счет этого счетчика, я надеюсь, будет осуществляться "ротация" банеров).

Так вот, вопрос, который я вообще не представляю, как реализовать, связан с пожеланием возможности в программе назначить одним банерам приоритет в показе по отношению к другим. То есть, допустим есть три баннера - А, Б и В. И вот баннер В нужно показывать (допустим) в три раза чаще, чем баннеры А и Б. То есть, это и есть главный вопрос темы - КАК реализовать такую возможность?

И второй вопрос, про вариант решения которого у меня "смутные представления" есть, но не уверен. Если один баннер должен показываться на нескольких сайтах, как лучше всего прописать их в поле referal таблицы 1. Я думал вписывать туда разделенные запятыми Id-ы со второй таблицы, а проверку при выборке выполнять с помощью IN. Может есть решения получше?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.05.2017, 12:30
Ответы с готовыми решениями:

Дана таблица "Сделка"("Код Товара", "дата", "количество") Удалите все прошлогодние сделки.
помогите решить задания!!! 1.Составьте SQL-запрос на удаление. Дана таблица "Сделка"("Код...

Приоритеты выдачи: сначала выдавать записи со значением "q", затем "sh", и в конце "s"
Есть небольшая база данных (предположим 10 записей). Есть столбик "Game", он может принимать 3...

Добавить 2 поля "месяц" и "год" и заполнить их из поля "дата отчета"...
Всем доброго времени суток! Помогите новичку решить следующую задачку, пжл. Есть таблица...

Ошибка "Index of" и "Forbidden", как их устранить?
Доброго времени суток! Может, я пишу не в том разделе, приношу извинения, если так. У меня вот...

1
Эксперт PHP
5750 / 4131 / 1506
Регистрация: 06.01.2011
Сообщений: 11,279
23.05.2017, 16:08 2
Цитата Сообщение от Dmitry Посмотреть сообщение
есть три баннера - А, Б и В. И вот баннер В нужно показывать (допустим) в три раза чаще, чем баннеры А и Б
Можно так:
- Создайте поле priority (TINYINT). В него пишите цифры (от 1 до 100) -- они соответствуют вероятности выбора строки, в процентах. Сумма чисел в столбце priority всегда должна равняться 100, сами понимаете.
Далее выполняйте такой запрос:
SQL
1
2
3
SET @offset = 0, @point = FLOOR(RAND() * 100);
 
SELECT * FROM таблица WHERE @offset < @point AND (@offset := @offset + priority) >= @point;
Цитата Сообщение от Dmitry Посмотреть сообщение
Если один баннер должен показываться на нескольких сайтах, как лучше всего прописать их в поле referal таблицы 1
Я бы использовал нормализацию. Т.е. убираем referal из первой таблицы и создаём новую таблицу:
баннер_idсайт_id
Получается связка "многие-ко-многим". Теперь пишем в неё связку баннер-сайт -- каждая запись на отдельной строке.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.05.2017, 16:08
Помогаю со студенческими работами здесь

Какой id (автоинкремент ) лучше "число + текст" или "число"?
Рассмотрим два варианта ID Вар 1. id (автоинкремент ) в формате &quot;число + текст&quot;: - 1_текст -...

Вывести все книги автора "Кинг", которые выпустило издание "Олимп"
доброго времени суток:) не получается создать запрос с подзапросом по заданию: вывести все книги...

Primary key "id" и копирование этого самого значение в поле "group_id"
Всем привет. Если в таблицу добавить навую запись, то поле primary key &quot;id&quot; автомотически...

Значение по умолчанию: "0"; "Null"; "нет значения по умолчанию"
Форумчане, прошу Вашего совета! В свойствах поля таблицы MySQL &quot;Значение по умолчанию&quot; есть :...

Связи между сущностями "студент" и "посещение"
Есть таблица &quot;студент&quot; id_student - prymary ...

Связь many to many между таблицами "Товар" и "Заказ"
Есть две таблицы, &quot;Товар&quot; и &quot;Заказ&quot;. Один заказ может иметь много разных и одинаковых товаров(надо...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru