我正在为我的工作构建数据库,并且无法确定如何构建此查询。mysql左加入多列
有关我的问题的表是:
工作
Surgical_Planning - 有工作作为外键,存在一些工作,不为别人
Medical_Model - 有工作作为外键,与作业1对1的关系
这是一个工作查询,我没有关于手术计划的任何信息
SELECT
job,
physician_idphysician as Physician,
patient_idpatient as Patient,
status,
DATE_FORMAT(scan_date, '%M %e, %Y, %l:%i%p') as Scan_Date,
DATE_FORMAT(timestamp, '%M %e, %Y, %l:%i%p') as Recieved,
DATE_FORMAT(date_required, '%M %e, %Y, %l:%i%p') as Date_Required
FROM
job, patient_has_physician as phys, Scan, Medical_Model as med
WHERE
Scan.job_job = job AND phys.job_job = job
AND med.job_job = job AND job.type = 'medical
我想我想做一个左连接,这样它将按顺序显示每个作业,包含上面查询中的所有信息,但是当有作业的Surgical_Planning时#我希望有一列也是如此。这是我尝试不工作
SELECT
job,
physician_idphysician as Physician,
patient_idpatient as Patient,
status,
DATE_FORMAT(scan_date, '%M %e, %Y, %l:%i%p') as Scan_Date,
DATE_FORMAT(timestamp, '%M %e, %Y, %l:%i%p') as Recieved,
DATE_FORMAT(date_required, '%M %e, %Y, %l:%i%p') as Date_Required
FROM
job, patient_has_physician as phys, Scan, Medical_Model as med
LEFT JOIN Surgical_Planning ON job.job = Surgical_Planning.job_job
AND Scan.job_job = job AND phys.job_job = job
AND med.job_job = job AND job.type = 'medical'
我能得到这个基本LEFT JOIN工作,我想要的方式,但如果我想添加更多的列像上面这是行不通的。
SELECT job, planning_id
FROM job
LEFT JOIN Surgical_Planning ON job = Surgical_Planning.job_job
可以使用子查询吗?我可以弄清楚这些更基本的查询,但真正遇到这些更复杂的连接和子查询问题。任何建议表示赞赏。
编辑---工作表模式
- 表mmrl
。 job
DROP TABLE IF EXISTS mmrl
。 job
;
CREATE TABLE IF NOT EXISTS mmrl
。job
(
job
INT(11)NOT NULL AUTO_INCREMENT,
type
VARCHAR(45)NULL,
status
VARCHAR(45)NULL DEFAULT NULL,
timestamp
TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY(job
))
ENGINE = InnoDB
DEFAULT CHARACTER SET = latin1;