Доступ к справке SQL-запросов с использованием Not Exists - PullRequest
0 голосов
/ 09 февраля 2011

У меня есть таблица с именем sys_event_log со следующими столбцами:

user_name, event_type, event_message, time_stamp

События входа и выхода отслеживаются с помощью event_type либо «Login Success», либо «Logout».Событие "

Использование SQL в Access Я пытаюсь вернуть список отдельных пользователей, вошедших в базу данных, которые еще не вышли из системы на основе строго в журнале событий event_types и time_stamps.

На данный момент у меня возник вопрос:

SELECT DISTINCT
     a.user_name,
     a.event_type,
     a.time_stamp
FROM
     sys_event_log a
WHERE NOT EXISTS
 (
     SELECT
          1
     FROM
          sys_event_log b
     WHERE
          b.time_stamp > a.time_stamp 
          AND a.user_name = b.user_name 
          AND a.event_type = "Logout Event"
 )
AND a.event_type = "Login Success";

Кажется, что он близок, но не возвращает ожидаемый набор данных.

Ответы [ 3 ]

1 голос
/ 09 февраля 2011

Попробуйте это:

SELECT 
   a.user_name, 
   a.event_type, 
   a.time_stamp
FROM
   sys_event_log a
WHERE a.event_type = "Login Success" AND
   a.time_stamp = ( SELECT MAX( b.time_stamp ) 
                    FROM sys_event_log b 
                    WHERE b.user_name = a.user_name )
1 голос
/ 10 февраля 2011
  SELECT a.user_name
       , COUNT(*) AS logins
       , ( SELECT COUNT( b.time_stamp ) 
             FROM sys_event_log b 
             WHERE b.user_name = a.user_name
               AND b.event_type = "Logout Event"
          ) AS logouts
       , logins - logouts AS activeConnections
    FROM sys_event_log a
    WHERE a.event_type = "Login Success"
    GROUP BY a.user_name
    HAVING logins > logouts
1 голос
/ 09 февраля 2011

Это будет иметь больше смысла, если вы используете

b.event_type = "Logout Event"

здесь

      b.time_stamp > a.time_stamp 
      AND a.user_name = b.user_name 
      AND a.event_type = "Logout Event"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...