C#学习教程:使用INNER JOIN时出现意外的数据库输出分享


使用INNER JOIN时出现意外的数据库输出

我有以下SQL查询

SELECT r.BEZEICHNUNG AS BEZEICHNUNG, r.ID AS ID, ra.BEZEICHNUNG AS raumBEZEICHNUNG, ra.ID AS raumID FROM RAUM r INNER JOIN RAZUORDNUNG rz ON rz.RAUM_ID = r.ID INNER JOIN RAUMATTRIBUTE ra ON rz.RAUMATTRIBUTE_ID = ra.ID WHERE RAUMKLASSE_ID = ISNULL(@Raumklasse_ID, RAUMKLASSE_ID) AND STADT_ID = ISNULL(@Stadt_ID, STADT_ID) AND GEBAEUDE_ID = ISNULL(@Gebaeude_ID, GEBAEUDE_ID) AND REGION_ID = ISNULL(@Region_ID, REGION_ID) AND RAUMATTRIBUTE_ID = ISNULL(@Raumattribute_ID, RAUMATTRIBUTE_ID) 

但我认为这有点不对劲。

例如:

如果我在浏览器的RAUMKLASSE_ID文本字段中放入three并调用我的方法,它只返回一个房间。 但是有六个房间有这个ID。 奇怪的是,如果我删除了两个INNER JOIN和我的SELECT的第二行,就像这样:

 SELECT r.BEZEICHNUNG AS BEZEICHNUNG, r.ID AS ID FROM RAUM r WHERE RAUMKLASSE_ID = ISNULL(@Raumklasse_ID, RAUMKLASSE_ID) AND STADT_ID = ISNULL(@Stadt_ID, STADT_ID) AND GEBAEUDE_ID = ISNULL(@Gebaeude_ID, GEBAEUDE_ID) AND REGION_ID = ISNULL(@Region_ID, REGION_ID) AND RAUMATTRIBUTE_ID = ISNULL(@Raumattribute_ID, RAUMATTRIBUTE_ID) 

它正在返回六个房间,这是正确的。 我不知道我的查询有什么问题。 也许有人可以帮助我吗?

提前致谢

这是预期的行为,因为:

 FROM RAUM r INNER JOIN RAZUORDNUNG rz ON rz.RAUM_ID = r.ID INNER JOIN RAUMATTRIBUTE ra ON rz.RAUMATTRIBUTE_ID = ra.ID 

只获得表RAUMRAZUORDNUNGRAUMATTRIBUTE表中的房间,删除这些INNER JOIN将从RAUM表中获取满足您条件的所有房间,查看这些页面以获取有关JOIN的更多详细信息:

INNER JOIN不会返回没有相应RAZUORDNUNG或RAUMATTRIBUTE的RAUM条目。 您可能需要LEFT JOIN; 在这种情况下,raumBEZEICHNUNG和raumID在返回的集合中可能为null。

上述就是C#学习教程:使用INNER JOIN时出现意外的数据库输出分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—猴子技术宅(www.ssfiction.com)

本文来自网络收集,不代表猴子技术宅立场,如涉及侵权请点击右边联系管理员删除。

如若转载,请注明出处:https://www.ssfiction.com/ckf/1031833.html

(0)
上一篇 2022年1月14日 上午4:04
下一篇 2022年1月14日 上午4:06

精彩推荐

发表评论

您的电子邮箱地址不会被公开。