1

我有一张名为“ELEMENTS”的桌子。在此查询中,结果应该与 ELEMENTS 中的行数一样多。

ELEMENT 表具有与其他表中的文本值相对应的数值。我画了这张有关系的图。线条表示相应的键,圆圈是我需要的文本值。

在此处输入图像描述

这是我的查询:

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.SUBSTITUTION_GROUP_ID = SUBSTITUTION_GROUPS.RID AND 
    ELEMENTS.ELEMENT_SCHEMA_ID = SCHEMAS.RID AND
    ELEMENTS.DATA_TYPE_ID = DATA_TYPES.RID

当我应该有数千条记录时,这给了我 20 条左右的记录。我查看了记录,但无法找出它正在显示的记录中的模式。

4

1 回答 1

3

据推测,您的维度要么为 NULL,要么未完全填充。您可以使用以下方法解决此问题left outer join

SELECT ELEMENTS.RID, TAXONOMIES.SHORT_DESCRIPTION, type, ELEMENT_NAME, ELEMENT_ID, 
       SUBSTITUTION_GROUPS.DESCRIPTION, namespace_prefix, datatype_localname 
FROM ELEMENTS left outer join
     SUBSTITUTION_GROUPS
     on ELEMENTS.SUBSTITUTION_GROUP_ID = SUBSTITUTION_GROUPS.RID left outer join
     TAXONOMIES
     on ELEMENTS.TAXONOMY_ID = TAXONOMIES.RID left outer join
     SCHEMAS
     on ELEMENTS.ELEMENT_SCHEMA_ID = SCHEMAS.RID left outer join
     DATA_TYPES
     on ELEMENTS.DATA_TYPE_ID = DATA_TYPES.RID

如果你正在学习 SQL,你应该学习:

  1. 正确的 ANSI 标准 JOIN 语法
  2. 为查询中的每个字段加上其来源表的前缀
  3. 使用简短但易于理解的别名,例如元素的“e”和分类的“t”。
于 2013-03-07T02:27:38.350 回答