0

この SQL クエリを実行すると、各 Find_ID が 4 回返されます。一意の検索のみを選択するにはどうすればよいですか?

SELECT A.FIND_ID, B.NAME, PERIOD
FROM FINDS A, CLASS B
WHERE A.X >= 4
AND A.X <= 10
AND A.Y >= 4
AND A.Y <= 10
AND FIND_ID = DISTINCT

これは戻ります

FIND_ID NAME                 PERIOD
========== ==================== ====================
         2 SHARD                BRONZE
         5 SHARD                BRONZE
         2 METAL_WORK           IRON_AGE
         5 METAL_WORK           IRON_AGE
         2 FLINT                MESOLITHIC
         5 FLINT                MESOLITHIC
         2 BONE                 RECENT
         5 BONE                 RECENT
4

2 に答える 2

2

個別のプロパティを使用してください。テーブル 1 から個別 (サンプル) を選択します。

于 2013-01-27T13:29:08.910 に答える
0

FINDS と CLASS の 2 つのテーブルが関連付けられている場合は、何らかの結合 (推定では INNER) を使用する必要があります。4 つの結果が得られる理由は、結果のデカルト積を返すクエリを実行しているためです。つまり、2 つのテーブルをリンクする共通フィールドなしで、両方のテーブルのすべての組み合わせを結合して取得します。

これが例です。以下の 2 つの非常に単純なテーブルがあるとします。

PersonID   Name
1           Matt
2           Fred

PersonID   Salary
1           23000
2           18000

次に、次のようなクエリ:-

SELECT * FROM Person, Salary

次のようなものを返します:-

PersonID  Name  PersonID  Salary
1         Matt  1         23000
2         Fred  2         18000
1         Matt  2         18000
2         Fred  1         23000

出来上がり、2 つを期待するかもしれない 4 つのレコード。各行が異なるため、これに DISTINCT を追加しても何も達成されません。関連するテーブルをリンクするには、次のようなものが必要です:-

SELECT * FROM Person INNER JOIN Salary ON Person.PersonID = Salary.PersonID
于 2013-01-27T13:46:29.130 に答える