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
编辑所有内容一样。
拓扑数据库:资产 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
编辑所有内容一样。