我有以下表结构
Department
(deptID
,deptName
)
DepartmentTask
(deptID
,taskCode
,taskName
)
DepartmentTaskInMajorTask
(deptID
,taskCode
,T1
,T2
,...Tn
)
我需要以下列作为输出
deptName, taskName, T1, T2, …Tn
我尝试了一些连接但是我得到了多个值,不知道我是怎么做到的。例如,deptID = ‘xyz’
有10个任务,因此表DepartmentTaskInMajorTask
有10行。因此,输出shold只返回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
也是如此。因此,输出还应该为我提供包含deptName
和taskName
的131条记录。
答案 0 :(得分: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 join here
的可视化说明的有用帖子答案 1 :(得分:-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