2012-01-26 17 views
0

Я хочу использовать MySQL для сбора суммы строк, которые являются новыми в текущем месяце, но не в прошлом.Как получить количество строк, которые не были в прошлом

У меня есть эта таблица:

id, gamer_id, date 

Я хочу, чтобы проверить, сколько новые игроки зарегистрированы в текущем месяце, но нет записей для них за предыдущие месяцы.

Как я могу это сделать?

mysql_num_rows(
    mysql_query(
     "SELECT id FROM gamers WHERE date >= '2012-01-01' GROUP BY gamer_id" 
    ) 
); 

Но здесь я не знаю, как это сделать, может ли кто-то помочь мне?

+0

Поскольку я не очень подкованных с MySQL, я бы захватить все строки, а затем преобразовать дату времени с помощью 'StrToTime()'. Но, возможно, более элегантное решение. –

+0

Поскольку это звучит так, из ваших комментариев это не ваша таблица с информацией о пользователе - это зарегистрированная дата, не сохраненная в вашей таблице «users» (или как вы ее называете). Это было бы самым элегантным решением, вместо того, чтобы полагаться на то, что похоже на какую-то таблицу доступа. – jprofitt

ответ

1
list($cnt) = mysql_fetch_row(mysql_query(
    "SELECT COUNT(`id`) FROM `gamers` WHERE `date` >= '2012-01-01'" 
)); 

В частности, важно использовать кавычку вокруг имен столбцов, потому что date является зарезервированным словом.

EDIT:

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

list($cnt) = mysql_fetch_row(mysql_query(
    "SELECT COUNT(`id`) FROM `gamers` WHERE MIN(`date`) >= '2012-01-01'" GROUP BY `gamer_id` 
)); 
+0

Да, но число, которое я получу, не очень хорошо, потому что геймер может быть и в прошлые месяцы, я хочу только номер для новых геймеров. – Hanan

+0

Итак, вы говорите, что 1) игроки могут появляться несколько раз в разные даты и 2) вы только хотите, чтобы они подсчитали, не имеют ли записи до указанной даты? –

+0

да! точно! .. – Hanan

Смежные вопросы