Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Выбрать 4 случайных банера разного типа
 
 автор: mihdan   (19.02.2010 в 16:08)   письмо автору
 
 

Дамп


CREATE TABLE IF NOT EXISTS `sh_advertising` (
  `id` smallint(5) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `place` enum('top','right','bottom','left') NOT NULL DEFAULT 'top',
  `advertiser` enum('yandex','google','begun') NOT NULL DEFAULT 'yandex',
  `hits` smallint(5) unsigned NOT NULL DEFAULT '0',
  `viewed` smallint(6) NOT NULL DEFAULT '0',
  `code` text NOT NULL,
  `is_vis` char(1) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Реклама на сайте' AUTO_INCREMENT=1 


Вопрос, собственно, в теме

Тип place - место отображения банера на сайте,
adveriser - рекламодатель

  Ответить  
 
 автор: Тень&   (19.02.2010 в 17:38)   письмо автору
 
   для: mihdan   (19.02.2010 в 16:08)
 

Запрос типа SELECT COUNT(*) AS q, place FROM sh_advertising WHERE ... GROUP BY place
Далее генерируешь 4 offset'а (для LIMIT) и запрос с UNION.

  Ответить  
 
 автор: Trianon   (19.02.2010 в 17:45)   письмо автору
 
   для: Тень&   (19.02.2010 в 17:38)
 

Я вот что думаю...
А не будет ли более расово верным в таблицах с превалирующей случайной выборкой поддерживать поле seq с последовательной нумерацией, для выполнения этой самой выборки по прямому уникальному ключу?

  Ответить  
 
 автор: Тень&   (19.02.2010 в 18:05)   письмо автору
 
   для: Trianon   (19.02.2010 в 17:45)
 

COUNT на MAX заменится, а LIMIT на WHERE? Плюс ответственность за возможные "дыры". Чем оно вернее? Не ощущаю.

  Ответить  
 
 автор: Trianon   (19.02.2010 в 18:17)   письмо автору
 
   для: Тень&   (19.02.2010 в 18:05)
 

LIMIT на WHERE IN($list)

Выборка по индексу пойдет.
Собственно, это только мысль...

  Ответить  
 
 автор: Тень&   (19.02.2010 в 18:18)   письмо автору
 
   для: Trianon   (19.02.2010 в 18:17)
 

В принципе, да. Только тогда по-хорошему надо будет работать с InnoDB.

  Ответить  
 
 автор: Trianon   (19.02.2010 в 18:20)   письмо автору
 
   для: Тень&   (19.02.2010 в 18:18)
 

Это в смысле - чтобы таблицу при удалениях инконсистентной не оставлять?

  Ответить  
 
 автор: Тень&   (19.02.2010 в 18:28)   письмо автору
 
   для: Trianon   (19.02.2010 в 18:20)
 

Да

  Ответить  
 
 автор: mihdan   (22.02.2010 в 00:18)   письмо автору
 
   для: Trianon   (19.02.2010 в 18:20)
 

Так на каком варианте остановиться?

  Ответить  
 
 автор: mihdan   (25.02.2010 в 11:02)   письмо автору
 
   для: Trianon   (19.02.2010 в 17:45)
 

Каким образом реализуется?

  Ответить  
 
 автор: Trianon   (25.02.2010 в 11:17)   письмо автору
 
   для: mihdan   (25.02.2010 в 11:02)
 

ответ был дан.

  Ответить  
 
 автор: mihdan   (25.02.2010 в 15:56)   письмо автору
 
   для: Trianon   (25.02.2010 в 11:17)
 

Модератор - почистил все неплохо ;) Остальное в уме

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования