gpt4 book ai didi

mysql查询根据多个条件连接4个表

转载 作者:可可西里 更新时间:2023-11-01 07:46:27 24 4
gpt4 key购买 nike

我在 mysql 中有四个表如下:

enter image description here

enter image description here

我想做的是将表格连接在一起,以显示是否已为部门中的每个用户完成培训,如果已完成,则显示培训日期,否则显示需要培训。

因此部门财务所需的输出类似于:

enter image description here

我已尝试使用以下代码,但连接变得不准确且无效。

select o.person, o.job, j.risk, r. training,c.course,
c.person,c.datecompleted
from orgstructure o
left outer join jobsrisks j
on o.job=j.job
left outer join risktraining r
on j.risk=r.risk
left outer join coursescompleted c
on o.person=c.person
where o.department='finance'

我应该将多个选择查询嵌入到一个查询中吗?任何帮助表示赞赏。

最佳答案

我猜这个问题是你加入 orgstructurecoursescompleted 只有 person,我想你还需要参加培训:

select o.person, 
o.job,
j.risk,
r.training,
c.course,
c.person,
c.datecompleted
from orgstructure o
left outer join jobsrisks j
on o.job=j.job
left outer join risktraining r
on j.risk=r.risk
left outer join coursescompleted c
on o.person=c.person
and r.training = c.course --- add this
where o.department='finance'

如果此人已完成与该工作相关的每个风险的类(class),您需要加入此人。

将整个查询放在一起您将拥有:

select o.person, 
o.job,
j.risk,
r.training,
case when c.course is null then 'no' else 'yes' end TrainingCompleted,
coalesce(c.datecompleted, 'n/a') datecompleted
from orgstructure o
left outer join jobsrisks j
on o.job=j.job
left outer join risktraining r
on j.risk=r.risk
left outer join coursescompleted c
on o.person=c.person
and r.training = c.course
where o.department='finance'

参见 SQL Fiddle with Demo

结果是:

|        PERSON |        JOB |                     RISK |                  TRAINING | TRAININGCOMPLETED |       DATECOMPLETED |
-------------------------------------------------------------------------------------------------------------------------------
| taylor chetty | manager | safety | induction course | no | n/a |
| taylor chetty | manager | security | security course | no | n/a |
| bill thompson | data clerk | bad posture | personal wellbeing course | no | n/a |
| bill thompson | data clerk | repetitive strain injury | nursing course | yes | 2000-04-13 00:00:00 |
| bill thompson | data clerk | safety | induction course | yes | 2007-12-04 00:00:00 |
| ann brown | data clerk | bad posture | personal wellbeing course | no | n/a |
| ann brown | data clerk | repetitive strain injury | nursing course | no | n/a |
| ann brown | data clerk | safety | induction course | no | n/a |

关于mysql查询根据多个条件连接4个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13476117/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com