null 未出现在查询中...尝试引用或从中间开始 table

null not appearing in the query...Try referencing the or starting the middle table

拓扑数据库:资产 table -> 几何体 table -> Valid_value table -> Unit_of_Measure

如何通过引用或从 Valid_value table 并加入其余的 table。我这里的objective是显示一个valid_value_descr不为空的数据。原始查询是(请参阅查询)但问题是 - 我必须显示 dbo.GEOMETRY.GEOMETRIC_VALUE 的空值。如果我使用下面的查询,它不会显示空值...我必须从有效值 table 开始,然后连接其余值。我该怎么做..

SELECT dbo.ASSET.OID,
       dbo.ASSET.ASSET_ID,
       dbo.ASSET.ASSET_NAME,
       dbo.GEOMETRY.GEOMETRIC_VALUE,
       dbo.VALID_VALUE.VALID_VALUE_DESCR
FROM   dbo.ASSET
       INNER JOIN dbo.GEOMETRY
               ON dbo.ASSET.OID = dbo.GEOMETRY.ASSET_OID
       INNER JOIN dbo.VALID_VALUE
               ON dbo.GEOMETRY.GEOMETRIC_TYPE_OID = dbo.VALID_VALUE.OID
       INNER JOIN dbo.UNIT_OF_MEASURE
               ON dbo.VALID_VALUE.UNIT_OF_MEASURE_OID = dbo.UNIT_OF_MEASURE.OID 

如果我没看错你的问题,你的 VALID_VALUE table 中的值比你的 ASSET 或 GEOMETRY table 中的值要多,这意味着如果你想从 ASSET 开始,遍历 GEOMETRY,并且仍然看到 VALID_VALUE 中的所有值,你需要使用 RIGHT JOIN 到达你想看到所有的 table行数:

SELECT dbo.ASSET.OID,
       dbo.ASSET.ASSET_ID,
       dbo.ASSET.ASSET_NAME,
       dbo.GEOMETRY.GEOMETRIC_VALUE,
       dbo.VALID_VALUE.VALID_VALUE_DESCR
FROM   dbo.ASSET
       RIGHT JOIN dbo.GEOMETRY
               ON dbo.ASSET.OID = dbo.GEOMETRY.ASSET_OID
       RIGHT JOIN dbo.VALID_VALUE
               ON dbo.GEOMETRY.GEOMETRIC_TYPE_OID = dbo.VALID_VALUE.OID
       LEFT JOIN dbo.UNIT_OF_MEASURE
               ON dbo.VALID_VALUE.UNIT_OF_MEASURE_OID = dbo.UNIT_OF_MEASURE.OID

(最后的 LEFT JOIN 可能需要改回 INNER JOIN,因为该连接的目的似乎是限制结果,因为 none 的列在结果集中。)

此查询将为您提供 VALID_VALUE 中的所有行,其他所有内容都加入其中,就像您从那里开始并 LEFT JOIN 编辑所有内容一样。