オンライン学習 Web サイトの場合、教師は自分が教えたい任意のコースを作成できます。各コースにはレッスンがあります。学生は、これらのコース、または希望する場合は教師が追加する将来のコースに登録できます。生徒が教師からのコース
を
購読できる 3 つの方法を以下に示し
ます。subscriber_id 12
2.すべてのコースを購読してから、個々のコースの購読を解除します (現在のすべて の個別コースの購読を解除しても、将来のコースには引き続き購読されます) 。subscriber_id 10
3.個々のコースのみを購読するex.
サブスクライバー ID 11
subscribed_courses テーブルは次のようになります。
subscribed_courses (Table with all member chosen resort services)
teacher_id subscriber_id course_id sub_type
4 10 0 all
4 10 1 unsub
4 10 2 unsub
4 11 4 sub
4 12 0 all
教師が新しいコースまたはレッスンを追加するときは、subscribed_courses テーブルをスキャンして、購読しているどの生徒がメールを受け取る必要があるかを確認する必要があります。問題は、以下のクエリを機能させて、正しいsubscriber_idsを電子メールで取得することです。この特定のクエリの例では、新しいレッスンが追加されたばかりの course_id 2 を使用して、すべての購読者にメールを送信する必要があります。これを達成するためのより良い方法があるはずです:
SELECT DISTINCT subscriber_id
FROM subscribed_courses
WHERE teacher_id='4'
//AND #1 (sub_type='sub' AND course_id='2') //individually subscribed
#2 ((sub_type='all' AND course_id='0') AND (sub_type='unsub' AND course_id<>'2')) //subscribed to all, ensure subscriber didn't unsub from this course [all subscribed 1 row + more row(s) for unsub]
#3 (sub_type='all' AND course_id='0') //all subscribed [if this is one row only for subscriber]
私たちの状況で正しいsubscriber_idsを取得する方法や、より効果的な解決策はありますか?