次のテーブルがあります。
members:
----------------------------------------------
| member_id | member_name | member_join_date |
----------------------------------------------
events:
-------------------------
| event_id | event_name |
-------------------------
event_dates:
--------------------------------------
| event_id | event_date | event_week |
--------------------------------------
attendance:
------------------------------------------------------------
| member_id | event_id | attendance_date | attendance_week |
------------------------------------------------------------
そのため、特定の時間に組織に参加したメンバーがいて、毎週のイベントに参加する場合があります (イベントの発生はevent_dates
テーブルによって監視されます) 。
私がやりたいことは、少なくとも3回連続して欠席しているすべてのメンバーを取得することです
できる限りのことをしましたが、クエリの各部分はあると思いますが、それらをマージする方法がわかりません。
彼らが参加できた可能性のあるすべてのイベントを取得します。
SELECT
m.member_id AS id,
ed.event_id,
ed.event_week
FROM
members AS m
LEFT JOIN
event_dates AS ed
ON
ed.event_date >= m.member_join_date
彼らが実際に参加したすべてのイベントを取得します。
SELECT
m.member_id AS id,
a.event_id
FROM
members AS m
LEFT JOIN
attendance AS a
ON
a.member_id = m.member_id
2 つのクエリを 1 つにマージできれば、おそらくこの質問に対する答えは次のようになります。
しかし、今回はNULL
値をカウントしたい