0

我有:

  SELECT  dv.VariableID ,
            ds.DataSourceID ,
            p.DataVariableDataSourceParamId ,
            p.ParamCode ,
            p.ParamDisplayName ,
            p.DVDSParamControlType ,
            p.DependentOnDVDSParamId ,
            pv.ParamValue
    FROM    dbo.DataVariable dv
            INNER JOIN dbo.DataVariableDataSource ds ON dv.DataSourceId = ds.DataSourceID
            INNER JOIN dbo.DataVariableDataSourceParam p ON ds.DataSourceID = p.DataSourceId
            INNER JOIN dbo.DataVariableDataSourceParamValue pv ON p.DataVariableDataSourceParamId = pv.DataVariableDataSourceParamId
    WHERE   dv.VariableID = @vid
    ORDER BY dv.VariableID

当我只有前两个连接时,我得到了我想要的:6 个结果。当我添加第三个时,我得到 660。我只想要前 2 个连接中的 6 条记录的 ParamValue,我似乎无法弄清楚为什么会出现这种情况。我正在编写第 12 个小时的代码,我确信这非常明显,但我可以用一只手。提前致谢。

4

1 回答 1

1

这将是因为您的pv表中有许多行匹配DataVariableDataSourceParamId

您可以通过添加SELECT DISTINCT. 您可能需要清理该表或保留不同的

但是,只有在所有人都相同的情况下, distinct 才会有所帮助pv.ParamValue,否则您将理所当然地获得更多匹配项,因为正在发生的事情是您正在找到所有匹配项DataVariableDataSourceParamId并显示它们。如果所有这些匹配都是相同的值,那么 distinct 确实会有所帮助,尽管

于 2012-08-02T01:30:09.730 回答