|
|
|
| Всем привет!
Есть БД следующей структуры
таблица count, в ней хранятся клики по товарам:
id, bill_id (integer), date (date)
и есть таблица bills:
bill_id, vendorId
И вот надо выбрать из таблицы bills все записи (уникальные) у которых наибольшее количество кликов в таблице count и отсортировать их... При чём выбрать те клики у которых дата не больше чем 14 дней от текущей даты... Как должен выглядеть такой запрос по правилам? Я уже пару дней не могу его правильно составить.
Заранее спасибо. | |
|
|
|
|
|
|
|
для: Trivium
(24.06.2010 в 00:14)
| | показали бы варианты чтоли... | |
|
|
|
|
|
|
|
для: 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:( | |
|
|
|
|
|
|
|
для: 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
|
| |
|
|
|
|
|
|
|
для: Trianon
(24.06.2010 в 09:09)
| | Нет, JOIN там обязательно, т.к. надо выбрать ID производителя ещё.
Но уже ладно, я справился с этим, спасибо) | |
|
|
|