我有一个带有 4 个表的 MySQL 数据库:
job
job_application
client
candidate
每个表都有自己的主键,即job_id, job_application_id, client_id,candidate_id
表中的雇主可以在client表中发布职位job。该job表包含一个client_id标识客户的字段
表中的候选人candidate可以申请工作,在job_application表中插入一行。该job_application表包含一个job_id字段和一个candidate_id字段,用于标识工作是什么以及是谁申请的
我在为雇主编写查询以管理他们收到的工作申请时遇到了一些问题。作为一个例子,这里是我写的一个函数,它从job_application
public function deleteJobApplications($job_application_ids) {
$this->db->query("DELETE ja.* FROM " . DB_PREFIX . "job_application ja LEFT JOIN " . DB_PREFIX . "job j ON (j.job_id = ja.job_id) WHERE ja.job_application_id IN ('" . implode("','", array_map('intval', $job_application_ids)) . "') AND j.client_id = '" . (int)$this->client->getClientId() . "'");
}
因为client_id只在表中引用,job所以LEFT JOIN每次job想从表中UPDATE或DELETE从表中都需要到job_application表
我应该client_id向表中添加另一个字段job_application,本质上是复制数据库中已经保存的数据,还是继续LEFT JOINfor every UPDATEand DELETE?