sql >> Database teknologi >  >> RDS >> Mysql

MySQL - Forespørgsel efter ulæste meddelelser sammen med e-mails

Sidste e-mail modtaget og antal ulæste (modtaget).

SELECT e.MAIL_NO, e.BIZ_ID, e.FROM_ADD, e.TO_ADD, e.EMAIL_SUBJECT, DATE_FORMAT(e.UPDATED_DATE,'%d %b %y, %I:%i %p') AS DATE, e.MAIL_STATUS, CONCAT(ufrom.USER_FIRST_NAME,' ',ufrom.USER_LAST_NAME) AS U_NAME,if(UNREAD_MESSAGE_COUNT is null,0,UNREAD_MESSAGE_COUNT) FROM EMAIL e LEFT JOIN USER_CONFIG ufrom ON ufrom.USER_ID = e.TO_ADD left join (SELECT COUNT(*) AS UNREAD_MESSAGE_COUNT,TO_ADD FROM EMAIL_MESSAGE inner join EMAIL using (BIZ_ID) WHERE MESSAGE_STATUS = 'U' group by TO_ADD) t on t.TO_ADD= e.TO_ADD WHERE e.TO_ADD=:TO_ADD ORDER BY MAX(e.UPDATED_DATE) DESC, ufrom.USER_FIRST_NAME DESC LIMIT 0, 10

Sendte e-mails og antal ulæste sendte beskeder:

SELECT e.MAIL_NO, e.BIZ_ID, e.FROM_ADD, e.TO_ADD, e.EMAIL_SUBJECT, DATE_FORMAT(e.UPDATED_DATE,'%d %b %y, %I:%i %p') AS DATE, e.MAIL_STATUS, CONCAT(ufrom.USER_FIRST_NAME,' ',ufrom.USER_LAST_NAME) AS U_NAME,if(UNREAD_MESSAGE_COUNT is null,0,UNREAD_MESSAGE_COUNT) FROM EMAIL e LEFT JOIN USER_CONFIG ufrom ON ufrom.USER_ID = e.FROM_ADD left join (SELECT COUNT(*) AS UNREAD_MESSAGE_COUNT,FROM_ADD FROM EMAIL_MESSAGE inner join EMAIL using (BIZ_ID) WHERE MESSAGE_STATUS = 'U' group by FROM_ADD) t on t.FROM_ADD= e.FROM_ADD WHERE e.FROM_ADD=:FROM_ADD ORDER BY MAX(e.UPDATED_DATE) DESC, ufrom.USER_FIRST_NAME DESC LIMIT 0, 10

Redigeret:- Tilføjet Hvis count=null skal være 0, og tilføjet venstre join for at sikre, at resultaterne vises.

edit 2:Ændrede underforespørgslen til kun at tælle ulæste sendt til denne bruger.

Redigering 3:Opdateret 1. forespørgsel og tilføjet 2. forespørgsel afhængigt af påkrævede resultater. Dette burde gøre tricket. Du vil sikkert have den første.




  1. SQL Server-streng eller binære data vil blive afkortet

  2. MySQL max_user_connections vs max_connections

  3. Kan ikke oprette forbindelse til mysql fra Visual Studio 2015

  4. Hvad er den bedste måde at slette gamle rækker fra MySQL på en rullende basis?