Mysql
 sql >> база данни >  >> RDS >> Mysql

Последно влизане в MYSQL и брой влизания през последните 3 месеца

Първо решете всеки проблем поотделно:

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

Тествайте ги отделно, за да се уверите, че всяка от тези заявки работи както искате, и ги коригирайте, ако е необходимо.

След това, когато сте доволни, че и двете работят, обединете резултатите заедно:

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

Това ще позволи на MySQL да използва най-добре индексите за различните заявки.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL Използване на колона с низ с текст за дата като поле за дата

  2. MySQL тип колона TIMESTAMP имплицитно включва NOT NULL DEFAULT CURRENT_TIMESTAMP ПРИ АКТУАЛИЗИРАНЕ CURRENT_TIMESTAMP

  3. java.sql.SQLException:Достъпът е отказан за потребител 'root'@'localhost' (използвайки парола:ДА)

  4. SQL инжекция атака с php

  5. Неизвестен начален индекс на набора от символи '255', получен от сървъра