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

最初の 2 つの結合だけで、6 つの結果が得られます。3 番目を追加すると、660 になります。最初の 2 つの結合からの 6 つのレコードの ParamValue が必要なだけで、これが壊れている理由がわかりません。私はコーディングを始めて 12 時間目です。前もって感謝します。

4

1 に答える 1

1

pvこれは、テーブルに一致する多数の行があるためです。DataVariableDataSourceParamId

を追加することで確認できますSELECT DISTINCT。そのテーブルをクリーンアップするか、個別に保持する必要がある場合があります

ただし、個別はpv.ParamValueすべてが同じ場合にのみ役立ちます。そうでない場合は、すべての一致を見つけてDataVariableDataSourceParamId表示しているため、より多くの一致が得られます。これらの一致がすべて同じ値である場合、個別は確かに役立ちますが、

于 2012-08-02T01:30:09.730 に答える