2013-06-07 2 views
3

Я делаю этот запрос, чтобы узнать количество уникальных IP-адресов по дате. Дело в том, что мне нужно вернуть на PHP не только количество уникальных IP-адресов по дате, но и самих дат. Как я могу это сделать?mySQL Выберите DISTINCT ips на основе дат и дат возврата

function getTotUniqueVisitsDay($id) { 
    $query="SELECT COUNT(DISTINCT user_ip) FROM campaigns_visitors WHERE campaign_id = ".$id." group by date"; 
    $result = mysql_query($query) or die("Getting tot unique visits by day failed: " . mysql_error()); 
    $visits_by_day = mysql_num_rows($result); 
    return $visits_by_day; 
} 

ответ

1

Ваш запрос

SELECT COUNT(DISTINCT user_ip) 
FROM campaigns_visitors 
WHERE campaign_id = ? 
GROUP BY date 

Это не возвращает date, как вы нашли.

Вы должны иметь больше удачи с

SELECT COUNT(DISTINCT user_ip), date 
FROM campaigns_visitors 
WHERE campaign_id = ? 
GROUP BY date 

Другие, вероятно, рекомендую использовать подготовленные заявления и mysqli процедуры; Я успешно перевел ваш запрос в формат, который можно подготовить.

Я надеюсь, вы можете построить PHP для управления измененным оператором.

0

Лучшей практикой является сохранение даты как last_updated и date_created column. Это сообщение подсказывает, как получить дату обновления для любой таблицы How can I tell when a MySQL table was last updated?

и согласно следующему сообщению, вы не можете получить дату обновления для конкретной строки в таблице How to get the date of record updating in MySQL

0
function getTotUniqueVisitsDay($id) { 
    $query="SELECT date_field FROM campaigns_visitors WHERE campaign_id = ".$id." group by date_field"; 
    $result = mysql_query($query) or die("Getting tot unique visits by day failed: " . mysql_error()); 
    $visits_by_day = mysql_num_rows($result); 
    $visits_by_day['count'] = count($visits_by_day); 
    return $visits_by_day; 
} 
Смежные вопросы