查询多次显示每条记录

时间:2014-01-17 04:49:28

标签: sql sql-server

这个查询多次显示每条记录,我的意思是超过25次,为什么?

SELECT        
    dbo.HrEmployee.EmplID, dbo.HrEmployee.EmplName, dbo.AtdRecord.RecDate, 
    dbo.AtdRecord.RecTime, dbo.HrDept.DeptName
FROM            
    dbo.HrDept 
RIGHT OUTER JOIN
    dbo.HrEmployee ON dbo.HrDept.DeptID = dbo.HrEmployee.DeptID 
LEFT OUTER JOIN
    dbo.AtdRecord ON dbo.HrEmployee.EmplID = dbo.AtdRecord.EmplID

我尝试过分明但没有任何效果

我正在尝试发布数据库结构

enter image description here

2 个答案:

答案 0 :(得分:1)

连接对返回的行数的影响取决于您要加入的两个表之间的关系的基数以及与您的连接条件匹配的记录数。如果您看到行数增加,则表示您加入了1:M或M:M关系。在这里回答你的问题需要知道的是HrDept,HrEmployee和AtdRecord之间的关系。

我猜HrEmployee:AtdRecord是1:M。

答案 1 :(得分:1)

根据您的理解,试试这个

SELECT        
    dbo.HrEmployee.EmplID, dbo.HrEmployee.EmplName, dbo.AtdRecord.RecDate, 
    dbo.AtdRecord.RecTime, dbo.HrDept.DeptName
FROM            
    dbo.AtdRecord 
INNER JOIN
    dbo.HrEmployee ON dbo.HrEmployee.EmplID = dbo.AtdRecord.EmplID
INNER JOIN
    dbo.HrDept ON dbo.HrDept.DeptID = dbo.HrEmployee.DeptID