2014-02-26 218 views
2

有兩個表部和員工 部:SQL連接兩個表上

DID DName   PhoneExt 
ADM Administration 100 
CLT Client Services 101 
DAT Data Conversion 102 

EMPLOYEE 
EID EName Salary MID DID 
e001 Martin 57000  CLT 
e002 West 39000 e001 CLT 
e003 Wilson 64000  DAT 
e004 Patel 48000 e003 DAT 
e005 Rae 42000 e001 CLT 
e006 Jones 36000 e003 DAT 
e007 Dunn 52000 e003 PRG 

如何列出這些員工,其管理者是從客戶 服務部門的名稱和ID?

+0

客戶服務有一個做了CLT。從DID ='CLT'工作的員工中選擇*。如果你想通過完整的DName來完成,那麼你需要一個內部連接。非常基本的SQL,首先嚐試一下,如果您仍然遇到問題,請發佈您的嘗試,我們將很樂意幫助 – Twelfth

+0

解釋更詳細的問題。你的輸出應該如何。 –

+0

當您使用良好的語法並以易於閱讀的方式格式化數據時,Overflowers總是喜歡它! :) – eatonphil

回答

2

名單上的名字和ID:

SELECT EName, EID 
這些員工的

FROM EMPLOYEE 

其經理爲:

WHERE MID IN 

客戶服務部:

(SELECT EID FROM EMPLOYEE WHERE DID = 'CLT') 
0
SELECT e1.* FROM employee e1 WHERE e1.MID IN 
    (SELECT e2.EID FROM employee e2 WHERE e2.DID = 'CLT') 
0

您可以使用此查詢:

SELECT EID, EName FROM EMPLOYEE WHERE MID IN (SELECT EID FROM EMPLOYEE WHERE DID = 'CLT') 
0

使用子查詢的罰款(由杜爾,穆罕默德,拉法,...的建議),但是,你可以這樣做更有效(無子查詢)通過自加入的職員表:

SELECT 
    emp.Ename, 
    emp.EID 
FROM 
    EMPLOYEE emp 

    INNER JOIN EMPLOYEE mngr 
    ON emp.MID = mngr.EID 
WHERE 
    mngr.DID = 'CLT' 

注 - 你實際上並不需要使用部門表在所有...