Php 如何获取没有对的值(根据sessionID,登录没有注销对)

Php 如何获取没有对的值(根据sessionID,登录没有注销对),php,mysql,Php,Mysql,我正在写一份申请报告,我有一个问题,我不知道如何解决它。我有一个用户名、日期和时间、事件和会话ID数据表。每个登录和注销对都有唯一的sessionID。我想根据sessionID提取其中的logu-IN没有logu-OUT对。如果可能,我希望在MYSQL中完成,如果不可能,那么在PHP中完成 有一个代码,它为我提供了所有事件的登录和注销表: SELECT username, date_time, event, sessionID FROM userevent WHERE username lik

我正在写一份申请报告,我有一个问题,我不知道如何解决它。我有一个用户名、日期和时间、事件和会话ID数据表。每个登录和注销对都有唯一的sessionID。我想根据sessionID提取其中的logu-IN没有logu-OUT对。如果可能,我希望在MYSQL中完成,如果不可能,那么在PHP中完成

有一个代码,它为我提供了所有事件的登录和注销表:

SELECT username, date_time, event, sessionID FROM userevent
WHERE username like 'User1'
AND date_time BETWEEN (NOW() - INTERVAL 500 DAY) AND (NOW() + INTERVAL 1   DAY)
ORDER BY date_time DESC
表:

Username    Date_time        Event           SessionID
User1   5.3.2015 13:26:50   LOG_IN  a1e02a779d403df0b7ddd099db14
User1   5.3.2015 11:10:48   LOG_OUT 72651b92ffd2cc5890548fdafe91
User1   4.3.2015 23:37:03   LOG_IN  72651b92ffd2cc5890548fdafe91
User1   4.3.2015 23:36:50   LOG_OUT b10a40d99c9b0eae3d5cbc8947a0
User1   27.2.2015 12:44:00  LOG_IN  b10a40d99c9b0eae3d5cbc8947a0
User1   27.2.2015 12:22:14  LOG_OUT ff210bb81e7550d7d5b24df11d55
User1   22.2.2015 6:20:51   LOG_IN  ff210bb81e7550d7d5b24df11d55
User1   22.2.2015 6:20:15   LOG_OUT c9b40e6eec5616a90573979b54fd
User1   18.2.2015 12:13:15  LOG_IN  c9b40e6eec5616a90573979b54fd
User1   18.2.2015 12:08:41  LOG_OUT 83f068cd8c9c04b1f955495d8c59
User1   14.2.2015 13:20:06  LOG_IN  83f068cd8c9c04b1f955495d8c59
User1   14.2.2015 13:07:36  LOG_OUT 7de97a3caf613ac3bb08dc494c6e
User1   14.2.2015 11:34:46  LOG_IN  7de97a3caf613ac3bb08dc494c6e
现在我需要一个查询来提取那个些,根据sessionID,logu-IN没有logu-OUT对。结果必须是这样的:

Username    Date_time        Event           SessionID
User1   5.3.2015 13:26:50   LOG_IN  a1e02a779d403df0b7ddd099db14
根据sessionID,每隔一个事件都有登录和注销对

我被困在这里,欢迎提供任何帮助,我非常感谢所有的帮助。

你可以按自己的意愿去做

select 
username,
Date_time,
Event,SessionID,
sum(Event='LOG_IN') as login_count, 
sum(Event='LOG_OUT') as logout_count 
from userevent 
group by username,SessionID 
having login_count = 1 and logout_count = 0 ;
从userevent中选择用户名、日期和时间、事件、会话ID 其中用户名类似“User1” 日期和时间介于现在-间隔500天和现在+间隔1天之间 而sessionID不在SELECT sessionID FROM userevent,其中event='LOG_OUT' 按日期\时间描述订购

就像您的代码一样,但添加了WHERE NOT IN语句,以确保查询不会检索已注销的sessionID

希望有帮助