我有3个表,一个表包含公司详细信息,一个表包含管理人员详细信息,一个表通过ID连接这两个Company_Officer,以便我可以告诉哪个管理人员为哪个公司工作,他也可以为多个公司工作,并且一个公司可以有多个工人。
我正在尝试创建一个查询,该查询将为我提供该官员为company_Id工作的公司的ID,官员姓名及其角色。他工作的公司必须将company_index设置为FTSE 100,他的状态Officer_resigned必须设置为0,并且他必须为1个以上的公司工作。
就像是:
Company_ID|Company_Name|Officer_Name|Officer_Role
--------------------------------------------------
1 | Apple PLC |Millis, John|Director
1 | Apple PLC |DLAMINI, Bob|Secretary
2 | Google PLC |Millis, Johm|Secretary
公司_详细信息:
官员_详细信息:
Company_Officer:
我已经开始摆弄sql了,但是对关系数据库而言,这对我来说并没有多大意义。我了解我需要使用join。一个查询是否可以全部实现?
另一个sql的额外约束是“仅获取那些为多家公司工作的人员”。
SELECT cd.company_id,
cd.company_name,
od.officer_name,
co.officer_role
FROM COMPANY_DETAILS cd
inner join COMPANY_OFFICER co
ON cd.company_id = co.company_id
inner join OFFICER_DETAILS od
ON co.officer_id = od.officer_id
WHERE cd.company_index = 'FTSE 100' AND
od.officer_resigned = '0' AND
co.officer_id IN
( SELECT officer_id
FROM COMPANY_OFFICER
GROUP BY officer_id
HAVING Count( DISTINCT company_id ) > 1
);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句