Đã nhận email lần cuối và số lượng email chưa đọc (đã nhận).
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
Số email đã gửi và số lượng tin nhắn đã gửi chưa đọc:
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
Đã chỉnh sửa:- Đã thêm If count =null thành 0 và thêm phép nối bên trái để đảm bảo kết quả hiển thị.
chỉnh sửa 2:Đã thay đổi truy vấn con để chỉ đếm số chưa đọc được gửi đến người dùng này.
Chỉnh sửa 3:Đã cập nhật truy vấn đầu tiên và thêm truy vấn thứ hai tùy thuộc vào kết quả được yêu cầu. Cái này cần phải dùng mẹo. Bạn có thể muốn cái đầu tiên.