SQL联接未提供正确的SQL输出

SQL联接未提供正确的SQL输出,sql,left-join,Sql,Left Join,我有以下表格结构 部门部门名称 部门任务部门,任务代码,任务名称 部门任务主要任务部门,任务代码,T1,T2,…Tn 我需要以下列作为输出 deptName, taskName, T1, T2, …Tn 我已经尝试了一些连接,但是我得到了多个值,不确定我是如何做到的。例如,deptID='xyz'有10个任务,因此表DepartmentTaskInMajorTask有10行。因此,输出应该只返回10行。但当我尝试时,它给了我超过10个 以下是我尝试过的SQL: SELECT Departmen

我有以下表格结构

部门部门名称

部门任务部门,任务代码,任务名称

部门任务主要任务部门,任务代码,T1,T2,…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_Depttask关系也有131条记录。因此,输出还应该给我131条deptName和taskName记录。

如果我理解正确,我认为您可以尝试使用内部联接查询来检索在其他表中具有相关记录的记录,如下所示

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可视化解释的有用文章

鉴于您的问题缺乏详细信息,我的最佳猜测是简单地连接到其他表:

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

请详细说明您到底尝试了哪些SQL语句。您可以粘贴您尝试执行的查询吗?如果没有看到您的SQL,讨论将是毫无意义的。daer发布您的代码,然后我们都会帮助您确定一件事,当您进行左联接时,如果它在另一个表中是否有相关记录,您将获得额外的记录,但当您进行内部联接,然后在另一个表中获得相关记录,好吗dear@user1889838欢迎你,伙计!如果你觉得答案是正确的,它帮助了你,请考虑接受它,所以你也将帮助未来的人有类似的问题。