使用SQL查询创建筛选器

使用SQL查询创建筛选器,sql,sql-server,database,relational-database,Sql,Sql Server,Database,Relational Database,我试图用SQL查询创建一个过滤器,但在链接到其他表的数值时遇到了问题 每次我尝试链接到另一个表时,它都会获取相同的记录,并对另一个表中的每个元素重复该记录 例如,下面是查询: 选择元素。RID,分类法。简短描述,[类型]、元素名称、元素ID、替换组。描述、名称空间前缀、数据类型\u本地名称 来自元素、替换组、分类法、模式、数据类型 其中ELEMENTS.TAXONOMY\u ID=TAXONOMIES.RID和ELEMENTS.ELEMENT\u SCHEMA\u ID=SCHEMAS.RID

我试图用SQL查询创建一个过滤器,但在链接到其他表的数值时遇到了问题

每次我尝试链接到另一个表时,它都会获取相同的记录,并对另一个表中的每个元素重复该记录

例如,下面是查询:

选择
元素。RID,分类法。简短描述,[类型]、元素名称、元素ID、替换组。描述、名称空间前缀、数据类型\u本地名称
来自元素、替换组、分类法、模式、数据类型
其中
ELEMENTS.TAXONOMY\u ID=TAXONOMIES.RID和ELEMENTS.ELEMENT\u SCHEMA\u ID=SCHEMAS.RID
和 ELEMENTS.DATA\u TYPE\u ID=DATA\u TYPES.RID
和ELEMENTS.SUBSTITUTION\u GROUP\u ID=0

最后一行是实际的筛选条件

以下是一个示例结果:

应该只有一个结果(项的RID为0)。但它为替换组表中的每个结果重复一条记录的副本(共4条)

这是我的数据库模式供参考。线条表示表格之间的关系,圆圈表示我想要的值:

您忘记在查询中加入
元素
替换组

SELECT
ELEMENTS.RID,TAXONOMIES.SHORT_DESCRIPTION,[type],ELEMENT_NAME,ELEMENT_ID,SUBSTITUTION_GROUPS.DESCRIPTION,namespace_prefix,datatype_localname
FROM
ELEMENTS,SUBSTITUTION_GROUPS,TAXONOMIES,SCHEMAS,DATA_TYPES
WHERE
ELEMENTS.TAXONOMY_ID = TAXONOMIES.RID AND ELEMENTS.ELEMENT_SCHEMA_ID = SCHEMAS.RID
AND ELEMENTS.DATA_TYPE_ID = DATA_TYPES.RID
AND ELEMENTS.SUBSTITUTION_GROUP_ID = SUBSTITUTION_GROUPS.RID
AND ELEMENTS.SUBSTITUTION_GROUP_ID = 0

两件事:1)在查询中使用内部/外部联接来澄清(至少对你自己而言)你在做什么;2) 我看不到有人加入替代组,即使你从那个表中退出。你需要补充一点。同意。啊,我不知道我怎么会错过它!。但是我得到一个错误“[Err]42000-[SQL Server]无法绑定多部分标识符“SUBSTITUTION\u GROUP.RID”。@johnhannigan:对不起,输入错误..
SUBSTITUTION\u GROUP
应该是
SUBSTITUTION\u GROUP
。我刚刚修正了我的答案