【问题标题】:Creating filter with SQL queries使用 SQL 查询创建过滤器
【发布时间】:2013-03-11 18:36:28
【问题描述】:

我正在尝试使用 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 和 ELEMENTS.ELEMENT_SCHEMA_ID = SCHEMAS .RID
AND ELEMENTS.DATA_TYPE_ID = DATA_TYPES.RID
AND ELEMENTS.SUBSTITUTION_GROUP_ID = 0

最后一行是实际的过滤条件。

这是一个示例结果:

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

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

【问题讨论】:

标签: sql sql-server database relational-database


【解决方案1】:

您忘记在查询中加入 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

【讨论】:

  • 啊,我不知道我是怎么错过的!但我收到错误“[Err] 42000 - [SQL Server]无法绑定多部分标识符“SUBSTITUTION_GROUP.RID”。”
  • @johnhannigan:对不起,错字..SUBSTITUTION_GROUP 应该是 SUBSTITUTION_GROUPS。我刚刚修复了我的答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-13
  • 1970-01-01
  • 2023-03-26
  • 1970-01-01
  • 2019-10-12
相关资源
最近更新 更多