これが私のテーブル構造です:
users:
id | email
emails:
id | subject | body
user_emails:
user_id | email_id
とてもシンプルなデザインです。ただし、user_emails に関連付けられていないすべての users.id に対して、最初の (最も低い) email.id を選択する必要があります。
説明する:
users:
id | email
1 | email@domain.com
2 | test@lol.com
3 | user@test.com
emails:
id | subject | body
1 | sub1 | body1
2 | sub2 | body2
user_emails:
user_id | email_id
1 | 1
1 | 2
2 | 1
データが示すように:
- ユーザー 1 は既に電子メール 1 と 2 を受信しているため、選択ではそのユーザーを除外する必要があります。
- ユーザー 2 はメール 1 のみを受信したため、ユーザー 2 とメール 2 を選択する必要があります。
- ユーザー 3 は電子メールを受信していないため、ユーザー 3 と電子メール 1 を選択する必要があります。
これは PHP で行うので、mySQL だけでは処理できない場合は、ロジックを PHP で記述する必要があります。
前もって感謝します
編集:おそらく、何千ものユーザー ID と何百もの電子メール ID が存在することに言及する必要があります。これらすべての電子メールを送信するスクリプトは、1 日 1 回実行されます。したがって、これは可能な限り最適化する必要があります。