私たちは多対多の関係にあるデータを持っており、各メンバーが勉強している科目を選択できます。このデータは論理的な削除パターンを使用します。このパターンでは、データが削除されたと見なされるまでDATETIMEarchived
フィールドが残ります。NULL
私たちがやりたいことは、ユーザーが現在購読しているサブジェクトを無視して、現在購読していないサブジェクトを選択することです。
これはテーブル構造です:
`member`
- id
- name
- created
- updated
- archived
`subject`
- id
- name
- created
- updated
- archived
`member_subject`
- member_id
- subject_id
- created
- archived
基本的なクエリ構造は次のとおりです。
SELECT DISTINCT subject.*
FROM subject
LEFT JOIN member_subject ON member_subject.subject_id = subject.id
WHERE subject.archived IS NULL
# Not sure how to go about the rest of the WHERE clause here
ORDER BY subject.name