sql >> データベース >  >> RDS >> Mysql

MySQL-メールメッセージとともに未読メッセージをクエリする

    受信したメールの長さと未読(受信済み)の数。

      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 
    

    送信された電子メールと未読の送信済みメッセージの数:

      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 
    

    編集:-count =nullの場合を0に追加し、結果が確実に表示されるように左結合を追加しました。

    編集2:このユーザーに送信された未読のみをカウントするようにサブクエリを変更しました。

    編集3:必要な結果に応じて、最初のクエリを更新し、2番目のクエリを追加しました。これでうまくいくはずです。おそらく最初のものが必要です。




    1. Djangoと読み取り専用のデータベース接続

    2. mysqldumpがcronで機能していません

    3. 私の場合、結果をフィルタリングするためのカスタムCrudRepositoryメソッド(@Query)を作成する方法

    4. MySQL5.5および5.6のデフォルト値