[英]Select values from one table based on two other tables (relational)
我有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_Details:
Officer_Details:
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
);
你甚至需要加入嗎?
SELECT DISTINCT c.Company_ID, c.Company_Name, o.Officer_Name, o.Officer_Role
FROM Company_Details c, Officer_Details o, Company_Officer co
WHERE Company_Index = 'FTSE 100' AND Officer_Resigned = 0 AND co.Officer_ID = o.Officer_ID AND co.Company_ID = c.Company_ID
只需在3個表之間使用內部聯接
select
Company_Details.Company_ID
, Company_Details.Company_Name
, Officer_Details.Officer_Name
, Company_Officer.Officer_Role
from Company_Details
INNER JOIN Officer_Details on Officer_Details.Officer_ID = Company_Officer.Officer_ID
INNER JOIN Company_Officer on Company_Officer.Company_ID = Company_Details.Company_ID;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.