2011-06-29 85 views
1

我有一個MySQL數據庫問題有關SQL查詢

表1三個表具有以下字段

Name of Table: SupervisorTable 
supervisorid (autoinc, bigint) 
employeeid (bigint) //same as User.userid 
supervisorname 

Name of Table: User 
userid (autoinc, bigint) 
userFullName (string) 
supervisorid (bigint) 
divisionid (bigint) 

Name of Table: DivisionTable 
divisionid(autoinc, bigint) 
divisionname (string) 

我希望能夠確定哪些部門主管的工作中,我的輸出應爲主管名稱和分部名稱。我的最新嘗試:

SELECT supervisortable.supervisorname, 
     divisiontable.divisionname 
    FROM supervisortable, 
     user, 
     divisiontable 
WHERE supervisortable.employeeid = user.userid; 

這給了主管的名字的每個組合與每一個部門:

supervisorname divisionname 
---------------------------- 
UserA   Department1 
UserB   Department1 
UserA   Department2 
... 
UserB   DepartmentN 
+0

@Cocoa開發:你嘗試過什麼? –

+1

到目前爲止你有什麼?看起來你有很多很多。還有一個重複的字段。每個主管也是一個用戶嗎? –

+0

主管是否屬於他們的用戶記錄所關聯的部門?或者是他們的直接下屬所屬分部的主管? –

回答

3

如果你想要的是找到所有監事,列出你的OP所需的輸出查詢那麼這將做到這一點:

SELECT S.supervisorname, 
     D.divisionname 
    FROM SuperisorTable S 
    JOIN User U ON S.employeeid= U.supervisorid 
    JOIN DivisionTable D ON U.divisionid = D.divisionid 

因爲沒有標準,你得到一個笛卡爾p產品(這很糟糕,除非你真的想要)。

+0

它怎麼給我一個空集? –

0
SELECT s.supervisorname, d.divisionname 
FROM DivisionTable d, SupervisorTable s, User u 
WHERE d.divisionid = u.divisionid 
AND s.supervisorid = u.supervisorid 
AND s.employeeid = u.userid 
+0

當我運行它時,我得到空置回。我有兩名主管和三名員工(每位主管也是一名僱員)。 s.employeeid與u.userid相同(我修改了上面的查詢來匹配列名) –

0

I'f我正確理解你的數據結構:

SELECT 
    S.supervisorname,   
    D.divisionname 
FROM SuperisorTable S 
INNER JOIN Users U ON S.employeeid = U.userid 
INNER JOIN DivisionTable D ON U.divisionid = D.divisionid