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

MySQL - Dotazování na nepřečtené zprávy spolu s poštovními zprávami

Poslední přijatý e-mail a počet nepřečtených (přijatých).

  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 

Odeslané e-maily a počet nepřečtených odeslaných zpráv:

  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 

Upraveno:- Přidáno If count=null na 0 a přidáno levé spojení, aby se zajistilo zobrazení výsledků.

edit 2:Změněn poddotaz tak, aby počítal pouze nepřečtené odeslané tomuto uživateli.

Úprava 3:Aktualizován 1. dotaz a přidán 2. dotaz v závislosti na požadovaných výsledcích. Tohle by mělo stačit. Pravděpodobně budete chtít první.




  1. Vyberte řádky, kde má pivot VŠECHNA ID

  2. Pořadí řazení MySQL podle hodnoty pole

  3. Příkaz PHP by měl vrátit více objektů, ale vrátí pouze jeden

  4. číslo portu serveru mysql