自分が作成した求人サイトのメール通知システムを作成しようとしています。現在、候補者にメールを送信する前に、一定量の求人をグループ化することを検討しています。
私は、candidate_id、job_id、および「電子メールで送信された」ブール値を含む、candidate_to_jobと呼ばれるテーブルを持っています。
私が苦労しているのは、新しいジョブが投稿されてメールが送信されたときにそのテーブルを更新することです。これまでのところ、新しいジョブが投稿されると、次のように実行します。
SELECT c2j.candidate_id, c2j.job_id, j.title
FROM " . DB_PREFIX . "candidate_to_job c2j
LEFT JOIN " . DB_PREFIX . "job j
ON (j.job_id = c2j.job_id)
WHERE c2j.emailed = 0
次に、PHPを使用してそれらをすべてグループ化し、次のような配列を作成します。
$candidates = array(
1 => array(1,2,3),
2 => array(1,3),
3 => array(4,5,6)
);
配列キーが候補IDであり、値がジョブIDの配列です。
その配列を使用して(電子メールが送信された後)、電子メールで送信されたcandidate_to_jobテーブル設定をtrueに更新します。たとえば、候補ID 1は、job_ids 1、2、および3に対して電子メールでtrueに設定されます。
1つのクエリでこれを行う方法はありますか?WHEN CASEステートメントを見てきましたが、この場合は当てはまらないと思いますか?数千人になる可能性があるため、候補者ごとに複数のクエリを実行したくありません。