Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Ostatnie logowanie MYSQL i liczba logowań w ciągu ostatnich 3 miesięcy

Najpierw rozwiąż każdy problem osobno:

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

Przetestuj je osobno, aby upewnić się, że każde z tych zapytań działa tak, jak chcesz, i dostosuj je w razie potrzeby.

Następnie, gdy będziesz zadowolony, że oboje działają, połącz wyniki razem:

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

Umożliwi to MySQL najlepsze wykorzystanie indeksów dla różnych zapytań.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Błędy MySQL MAX_JOIN_SIZE

  2. Laravel zagnieżdżone relacje

  3. Jaka jest najłatwiejsza do wdrożenia aplikacja do wyszukiwania witryn, która obsługuje wyszukiwanie rozmyte?

  4. Laravel Elokwentny ignoruje obudowę

  5. Jak zmienić silnik przechowywania tabel z MyISAM na InnoDB?