0

これを行う最善の方法を理解できないようです。ロジック: この例では Facebook を考えてください。私が投稿にコメントすると、その投稿をフォローしているすべての人にメールが届きますが、最初のコメントだったので私にはメールが届きません。ただし、私がフォローしている投稿に他の人がコメントした場合は、通知を受け取る必要があります。

PostA: フォローしています
PostB: フォローしています
PostA: コメントを投稿しました
PostB: 他の人がコメントを投稿しました

PostA ではなく PostB に関するメールが届くはずです。

次...

PostB: I posted a comment.

私は通知を受け取るべきではありませんが、他の人は受け取るべきです。


私はパーソナライズされた電子メール スケジューラを使用しています。ワークフローは次のとおりです。

  1. 実行条件を設定しました。
  2. SQL クエリを使用して受信者リストを設定します。
  3. メール用にパーソナライズされた挿入物を作成します (つまり、あなたがフォローしている投稿への新しいコメント)。

この例には 3 つのテーブルがあります。

  1. PostFollowers (ユーザー ID、電子メール、PostID)
  2. 投稿 (PostID、メッセージ、Notification_Sent <- BIT)
  3. PostComments (CommentID、UserID、Comment、Notification_Sent <- BIT)

Step1 : 実行条件を設定する

SELECT * FROM PostComments WHERE Notification_Sent = 0

値が返された場合、アプリケーションはキャンペーンを実行します。

Step2 : 受信者を選択する

SELECT 
     a.Email
    ,a.PostID

     FROM PostFollowers
     INNER JOIN PostComments b on a.PostID = b.PostID
     WHERE b.Notification_Sent = 0

したがって、上記の受信者クエリには、まだ通知が送信されていないコメントがある投稿をフォローしているすべての人が含まれます。

受信者が投稿をフォローしている人だけになるようにクエリを調整する最良の方法は何でしょうが、関連するコメントは自分のものではありませんでした. 自分で作成したものではないコメントが存在する場合にのみ、メールを受け取る必要があります。時間が経ち、1 つの投稿に 10 個のコメントを投稿したとします。フォローしている他の人にメールが送信されます。その後、誰かがやってきてコメントを投稿します。これでメールが届くはずです。

私はおそらくこれを考えすぎています。おそらく、私のコメントを差し引いて WHERE 句にあるカウントですか?

ありがとうございます。少し疲れています...私の質問が明確であることを願っています。

4

1 に答える 1

0

NoGotnu が既に述べたように、以下のクエリは機能するはずです

SELECT 
     pf.Email
    ,pf.PostID
FROM 
     PostFollowers pf
INNER JOIN 
     PostComments pc ON 
     pf.PostID = pc.PostID
WHERE 
         pc.Notification_Sent = 0 
     AND pf.UserID != pc.UserID
于 2013-08-28T09:41:06.553 に答える