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 に答える