나는 정상적인 방법으로는 답을 찾을 수 없다는 어려움이 있습니다. 가능한 한 많은 쿼리를 수행하고 싶습니다. 다른 대안은이 함수를 스크립팅하고 foreach가 무수히 많은 하위 쿼리를 루프하기 때문입니다.SQL에서 항목을 페어링하고 결과를 빼는 것
MySQL 서버에 로깅 테이블이 있으므로 다음 열이 있습니다. 키, 사용자 ID, 날짜 및 위치 위치는 "시작", "로그인"및 "끝"일 수 있습니다.
각 로그인 이벤트의 "시작", "로그인"및 "종료"의 차이점을 알고 싶습니다. 누구나 사용할 수있는 SQL 쿼리에 대해 알고 있습니까? 쿼리 내에서 쿼리와 관련이 있다고 생각하지만 JOIN 만 찾을 수 있습니까?
"시작"이벤트를 선택한 다음 각 "시작"이벤트에 대해 "시작"시간 이후에 "UserID"에 대한 다음 첫 번째 로그인 이벤트를 찾아야한다고 가정합니다. 동일한 "UserID"에 대한 다음 "시작"시간) DATE_SUB()을 사용하여 차이점을 찾습니다. 두 가지 경우가 발생할 경우를 대비하여 향후 "시작"이벤트 이후에 발생하는 "로그인"또는 "종료"이벤트를 걸러내는 것이 중요합니다.
아무도 Excel에서이 작업을 수행하지 못하면 매우 감사 할 것입니다. 그 이유는 수천 개의 vlookup에서 너무 더러운 느낌을 피할 수 있기 때문입니다. PHP 또는 Perl에서이 작업을 수행하고 LIMIT 1 SQL 문을 사용하여 루프를 작성하는 것을 고려하고 있지만 괜찮은 SQL SELECT 문과 비교하면 수천 개의 SQL 쿼리를 작성할 수 있습니다.
5 개의 항목이있는 예제 테이블을 표시 할 수 있습니까? 그리고이 5 개의 항목이 표시되는 것처럼 보이는 결과가 표시 될 수 있습니까? – Matt
3 개의 날짜가 같은 행에 업데이트되지 않는 이유는 무엇입니까? 각 사용자가 시작 시간, 로그인 시간 및 종료 시간을 가질 것인지를 안다면 tbl (key, uid, start, login, end)과 같은 테이블을 사용하는 것이 더 나을 것입니다. – Jai