使用SQL查询创建过滤器

时间:2013-03-11 18:36:28

标签: sql sql-server database relational-database

我正在尝试使用SQL查询创建过滤器,但是在链接到其他表的数值时遇到问题。

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

例如,这里是查询:

  

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 = 0

最后一行是实际的过滤标准。

以下是一个示例结果: enter image description here

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

这是我的数据库架构供参考。这些行表示表格之间的关系,圆圈表示我想要的值: enter image description here

1 个答案:

答案 0 :(得分:2)

您忘记在查询中加入ELEMENTSSUBSTITUTION_GROUPS

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