2014-02-16 64 views
1

我有以下表結構SQL連接不給正確的SQL輸出

DepartmentdeptIDdeptName

DepartmentTaskdeptIDtaskCodetaskName

DepartmentTaskInMajorTaskdeptIDtaskCodeT1T2,... Tn

我需要以下列作爲輸出

deptName, taskName, T1, T2, …Tn 

我已經嘗試了幾個連接,但我得到了多個值,不知道我是怎麼去做。例如,deptID = ‘xyz’有10個任務,因此表DepartmentTaskInMajorTask有10個行。所以,輸出只能返回10行。但是當我嘗試時,它給了我超過10個!

以下是我已經試過SQL:

SELECT Department.deptName, 
     MajorTask_DeptTaskRelation.T1, 
     MajorTask_DeptTaskRelation.T2, 
     DepartmentalTask.taskName 
FROM DepartmentalTask 
LEFT OUTER JOIN Department ON DepartmentalTask.deptID = Department.deptID 
RIGHT OUTER JOIN MajorTask_DeptTaskRelation ON Department.deptID = MajorTask_DeptTaskRelation.deptID 

DepartmentalTask有131條記錄,這樣做的MajorTask_DeptTaskRelation。所以,輸出也應該給我131條記錄deptNametaskName

+1

PL輕鬆闡述您準確嘗試了哪些SQL語句。 – Vapire

+0

你能粘貼你試圖執行的查詢嗎? – anurupr

+0

如果沒有看到你的SQL,討論將是沒有意義的。 – dasblinkenlight

回答

1

如果我理解正確的,你我想你可以用INNER JOIN查詢嘗試檢索已在其他表中相關記錄的記錄如下

SELECT a.deptName, b.taskName, c.T1, c.T2, … c.Tn 
FROM Department a 
INNER JOIN DepartmentTask b 
ON a.deptID = b.deptID 
INNER JOIN DepartmentTaskInMajorTask c 
ON b.taskCode = c.taskCode 

請檢查這個有用的張貼有關SQL的視覺解釋加入here

+0

謝謝,它幫助 – user1889838

+0

@ user1889838歡迎你!如果你覺得答案是正確的,它幫助你,請考慮接受它,所以你也會在未來幫助人們解決類似的問題。 – Fabio

-1

給你的問題缺乏細節我最好的猜測是一個簡單的連接到其他表:

select deptName, taskName, T1, T2, ...Tn 
from DepartmentTaskInMajorTask dtimt 
join DepartmentTask dt on dt.deptID = dtimt.deptID 
    and dt.taskCode = dtimt.taskCode 
join Department d on d.deptID = dtimt.deptID 
+0

爲什麼在這裏有一個downvote? – Bohemian