繁体   English   中英

mysql左连接多列

[英]mysql left join with multiple columns

我正在为我的工作构建一个数据库,我无法弄清楚如何构建这个查询。

与我的问题相关的表是:

工作

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'

我可以按照我想要的方式使这个基本的左连接工作,但是如果我想添加更多像上面的列那么它不起作用。

    SELECT job, planning_id
    FROM job
    LEFT JOIN Surgical_Planning ON job = Surgical_Planning.job_job

可以使用子查询吗? 我可以找出这些更基本的查询,但真的遇到了这些更复杂的连接和子查询问题。 任何建议表示赞赏。

编辑---作业表架构


- 表mmrl job


DROP TABLE IF EXISTS mmrl job

创建表,如果不存在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;

更改

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 Surgical_Planning ON job.job = Surgical_Planning.job_job
WHERE Scan.job_job = job AND phys.job_job = job
AND med.job_job = job AND job.type = 'medical'

编辑:

左连接发生在实际LEFT JOIN语法左侧的表中。 将作业移至列表的末尾,然后重试。

FROM patient_has_physician as phys, Scan, Medical_Model as med, job

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM