内部联接有4个表创建重复

时间:2015-03-01 07:01:52

标签: c# asp.net sql-server

SELECT DISTINCT Analysed.resultId,bugOwner,Analysed.bugId as BugDet,bugType,testCaseName 
FROM Bug 
INNER JOIN Analysed 
ON Analysed.bugId=Bug.bugId 
INNER JOIN Results 
ON Analysed.runId=Results.runId 
WHERE Analysed.runId=64

以上工作正常。

现在我有另一个表结果(resultId,runId,analyze,testname)

我还想在其他查询中包含testname,所以我添加了

SELECT Analysed.resultId,bugOwner,Analysed.bugId AS BugDet,bugType,testCaseName 
FROM Bug 
INNER JOIN Analysed 
ON Analysed.bugId=Bug.bugId 
INNER JOIN Results 
ON Analysed.runId=Results.runId
WHERE Analysed.runId=64

但是这个查询重复了记录。我猜它采取了一些交叉产品或其他东西。有谁知道如何解决它?

1 个答案:

答案 0 :(得分:0)

我认为问题是你在结果中有多行具有相同的runId。如果没有办法将它们限制为仅限于第一个记录(例如,对于第一个记录总是具有runId 0),则可以获取具有外部apply的testCaseName的第一个:

SELECT 
    A.resultId,
    B.bugOwner,
    A.bugId AS BugDet,
    B.bugType,
    R.testCaseName 
FROM 
    Bug B
    INNER JOIN Analysed A ON A.bugId=B.bugId 
    outer apply (
        select top 1 
            testCaseName
        from 
            Results R  
        where 
            A.runId=R.runId and
            R.testCaseName is not NULL) R
WHERE 
    A.runId=64