sql >> Databáze >  >> RDS >> Mysql

Poslední přihlášení MYSQL a počet přihlášení za poslední 3 měsíce

Nejprve vyřešte každý problém samostatně:

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

Otestujte je samostatně, abyste se ujistili, že každý z těchto dotazů funguje, jak chcete, a v případě potřeby je upravte.

Až budete rádi, že oba fungují, spojte výsledky dohromady:

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

To umožní MySQL co nejlépe využít indexy pro různé dotazy.



  1. Rozšíření tříd v databázi

  2. MySQL:Omezte dva sloupce tak, aby jeden z nich byl vždy NULL

  3. Kdy zvážit Solr

  4. Vyplňte rozevírací seznam HTML/PHP na základě prvního rozevíracího výběru