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

Форум MySQL

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

 

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

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

тема: Помогите составить запрос
 
 автор: Trivium   (24.06.2010 в 00:14)   письмо автору
 
 

Всем привет!
Есть БД следующей структуры
таблица count, в ней хранятся клики по товарам:
id, bill_id (integer), date (date)
и есть таблица bills:
bill_id, vendorId
И вот надо выбрать из таблицы bills все записи (уникальные) у которых наибольшее количество кликов в таблице count и отсортировать их... При чём выбрать те клики у которых дата не больше чем 14 дней от текущей даты... Как должен выглядеть такой запрос по правилам? Я уже пару дней не могу его правильно составить.
Заранее спасибо.

  Ответить  
 
 автор: Trianon   (24.06.2010 в 00:50)   письмо автору
 
   для: Trivium   (24.06.2010 в 00:14)
 

показали бы варианты чтоли...

  Ответить  
 
 автор: Trivium   (24.06.2010 в 03:07)   письмо автору
 
   для: Trianon   (24.06.2010 в 00:50)
 


SELECT `bills`.`id` , count( `count`.id ) AS `clickscount`
FROM `count`
JOIN `bills` ON bills.bill_id = count.bill_id
WHERE count.date >= date_add( curdate( ) , INTERVAL -14
DAY )
GROUP BY bills.id
ORDER BY clickscount DESC
LIMIT 0 , 50

но он как-то коряво отрабатывает...
берёт старые записи, а не за 2 недели...
и вообще какой-то левак пихает и вместо 50 выдаёт 74:(

  Ответить  
 
 автор: Trianon   (24.06.2010 в 09:09)   письмо автору
 
   для: Trivium   (24.06.2010 в 03:07)
 

WHERE `count`.`date` + INTERVAL 14 DAY  >=  CURDATE()   

Однако ж "левак" может быть связан и с тем, что в метке времени хранится лишь дата, без времени суток.


Да, и в таком ключе JOIN с таблицей bills Вам фактически не нужен, если внимательно поглядеть:

SELECT `id` , count( `id` ) AS `clickscount`
  FROM `count`
  WHERE `date` + INTERVAL 14 DAY  >=  CURDATE()
  GROUP BY `id`
  ORDER BY `clickscount` DESC
  LIMIT 50 

  Ответить  
 
 автор: Trivium   (24.06.2010 в 23:46)   письмо автору
 
   для: Trianon   (24.06.2010 в 09:09)
 

Нет, JOIN там обязательно, т.к. надо выбрать ID производителя ещё.
Но уже ладно, я справился с этим, спасибо)

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

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