2013-12-02 3 views
1

Мне нужен запрос mysql, который ищет несколько записей в базе данных.Поиск по одной и той же записи в базе данных

Например:

**Username Access_point Mac_address   Authdate** 

ALAIN   AP01  00:00:00:00:00 2013-11-22 05:00:01 
ALAIN   AP01  00:00:00:00:00 2013-11-22 04:59:10 
ALAIN   AP02  00:00:00:00:00 2013-11-22 04:59:01 
ALAIN   AP01  00:00:00:00:00 2013-11-22 04:58:50 
ALAIN   AP03  00:00:00:00:00 2013-11-22 04:57:55 
ALAIN   AP01  00:00:00:00:00 2013-11-22 04:50:01 
ALAIN   AP02  00:00:00:00:00 2013-11-22 03:00:01 

Я хотел бы запрос, который перечислить мне ту же строку (кроме Authdate) и вернуть его с Group By на имя пользователя, чтобы увидеть, сколько раз ALAIN было связано с AP01 последний час ,

Я не знаю, ясно ли это для вас ???

Я пытался так:

SELECT COUNT(username), username, (access_point), access-point, (mac_address), mac_address 
FROM table 
HAVING COUNT(username) > 1 
AND COUNT(access_point)> 1 
AND COUNT(mac_address) > 1 
GROUP BY username 

Спасибо за вашу помощь.

+1

Главный персонаж этой таблицы? – Sorter

+0

Первичный ключ - это идентификатор и mac_address – cmiscloni

+0

Таблица хранит ** только когда ** ALAIN разрешен (в столбце AuthDate) - из полей, которые вы разместили, я не думаю, что мы могли бы точно сказать **, как долго ** ALAIN был подключен для. Есть ли другие столбцы? – madebydavid

ответ

0

Я не знаю, что вы называете своей таблицей - в вашем примере это просто называется «таблица», но я думаю, вы изменили это, когда вы вставляли ее в SO.

Если вы хотите, чтобы подсчитать количество соединений для всех пользователей на всех точках доступа в последний час, вы можете использовать этот запрос:

SELECT 
    COUNT(*) AS NumberOfConnections, Username, Access_Point 
FROM 
    table 
WHERE 
    Authdate > DATE_SUB(Authdate, INTERVAL 1 HOUR) 
GROUP BY 
    Username, Access_Point; 

Если вам нужны только данные для Alain на AP01 то будет следующим:

SELECT 
    COUNT(*) AS NumberOfConnections, Username, Access_Point 
FROM 
    table 
WHERE 
    Authdate > DATE_SUB(Authdate, INTERVAL 1 HOUR) 
AND 
    Username = 'ALAIN' 
AND 
    Access_Point = 'AP01' 
GROUP BY 
    Username, Access_Point; 
Смежные вопросы