Как мне получить этот запрос MySQL, чтобы включить нулевые значения? - PullRequest
1 голос
/ 26 июня 2009

Я пишу сценарий обрезки, чтобы удалить контент с моего сайта, который был загружен более недели назад и к которому обращались 0 или 1 раз, также на прошлой неделе.

Есть 2 таблицы:

  • daily_hits - в нем хранится идентификатор элемента, дата и количество попаданий, которые этот элемент получил в эту дату.
  • видео - хранит актуальный контент

Я придумал это.

$last_week_date = date('Y-m-d',$now-(60*60*24*7));
$last_week_timestamp = $now-(60*60*24*7); 

SQL

SELECT 
            vid_id, 
            COALESCE(sum(hit_hits),0) as total_hits 
        FROM videos
        LEFT JOIN daily_hits
            ON vid_id = hit_itemid 
        WHERE (hit_date >= '$last_week_date') AND vid_posttime <= '$last_week_timestamp' 
        GROUP BY hit_itemid 
        HAVING  total_hits < 2 

Это выводит элементы, к которым был доступ один раз за последнюю неделю .... но не те, к которым вообще не было доступа. Если за последнюю неделю к элементу вообще не было доступа, в таблице daily_hits не будет записей. Я подумал, что COALESE должен позаботиться об этом, но это не сработало.

Как я могу это исправить?

Ответы [ 2 ]

2 голосов
/ 26 июня 2009

total_hits <2 </p>

Это гарантирует, что "нулевые хиты" не будут отображаться.

Сделайте второй запрос, который находит нули (в нем будут показаны записи из видео, у которых нет соответствующего ключа в daily_hits).

Сделайте запрос UNION, чтобы представить два набора данных как один.

0 голосов
/ 26 июня 2009
 HAVING  total_hits < 2 or total_hits is null
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...