sql >> Database >  >> RDS >> Mysql

MYSQL laatste login en aantal logins in laatste 3 maanden

Los eerst elk probleem afzonderlijk op:

SELECT A.UserID, MAX(TIME) AS LastLogin  
FROM UserMaster A  
LEFT JOIN UserWebActivity B
ON A.UserID = B.UserID  
AND Activity = 'Login'  
GROUP BY A.UserID

SELECT A.UserID, COUNT(Activity) AS Logins
FROM UserMaster A  
LEFT JOIN UserWebActivity B ON A.UserID = B.UserID  
AND Activity = 'Login'  
AND TIME BETWEEN (NOW() - INTERVAL 3 MONTH) AND NOW( )  
GROUP BY A.UserID

Test ze afzonderlijk om ervoor te zorgen dat elk van deze zoekopdrachten werkt zoals u wilt, en pas ze indien nodig aan.

Als u tevreden bent dat ze allebei werken, voegt u de resultaten samen:

SELECT T1.UserID, T1.LastLogin, T2.Logins
FROM
(
    SELECT A.UserID, MAX(TIME) AS LastLogin  
    FROM UserMaster A  
    LEFT JOIN UserWebActivity B
    ON A.UserID = B.UserID  
    AND Activity = 'Login'  
    GROUP BY A.UserID
) AS T1
JOIN
(
    SELECT A.UserID, COUNT(Activity) AS Logins
    FROM UserMaster A  
    LEFT JOIN UserWebActivity B
    ON A.UserID = B.UserID  
    AND Activity = 'Login'
    AND TIME BETWEEN (NOW() - INTERVAL 3 MONTH) AND NOW()
    GROUP BY A.UserID
) AS T2
ON T1.UserID = T2.UserID

Hierdoor kan MySQL optimaal gebruik maken van de indexen voor de verschillende zoekopdrachten.



  1. mysql, herhaal kolomnamen

  2. Is er een manier om store_result en get_result samen uit te voeren?

  3. HTML-reactie krijgen in plaats van JSON in Android

  4. Gegevens ophalen voor meerdere singles of referenties zonder like-operator