sql >> Databasteknik >  >> RDS >> Mysql

MYSQL senaste inloggning och antal inloggningar under de senaste 3 månaderna

Lös först varje problem separat:

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

Testa dem separat för att säkerställa att var och en av dessa frågor fungerar som du vill, och justera dem vid behov.

När du sedan är nöjd med att de båda fungerar, slå samman resultaten:

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

Detta kommer att tillåta MySQL att på bästa sätt använda indexen för de olika frågorna.



  1. Återställ din WordPress-databas med WP-CLI

  2. Råd om att strukturera ett kommentarsystem

  3. Hur DATE_ADD() fungerar i MariaDB

  4. Få summan av MySQL-kolumnen i PHP