プロが教える店舗&オフィスのセキュリティ対策術

Accessを勉強中です。
入力したデータ(テキストファイルのインポート)の重複除去として、
クエリに登録したデータフィールドすべてに対し、GroupByを実施しております(合計とか、平均とかは選択していない、単純に GroupBy)。

その一方で、最近、DISTINCTROW、DISTINCTを知りました。
DISTINCTROW ---クエリのプロパティで「固有のレコード」Yes
DISTINCT-------クエリのプロパティで「固有の値」Yes

DISTINCTROW、DISTINCTも、クエリのデータフィールドに登録した
ものだけの話であろうと、考えているのですが、明確には理解できていません。 特に「固有のレコード」とは、何をいっているのか、分かりません。分かりやすく解説していただけないでしょうか?
また、データの重複を除去する方法としてのDISTINCTROW、DISTINCTは、
一般的な方法なのでしょうか?

以上、宜しくお願いいたします。

A 回答 (1件)

こちらが参考になるかも知れません。



http://makotowatana.ld.infoseek.co.jp/access/das …

この回答への補足

早速の回答ありがとうございます。
DISTINCTに関しては、大方、理解できていると思います。
即ち、Selectの結果として得られた、全く同じ行を省くもの。
つまり、目で見える結果の明らかな、重複を省くというもの。

しかし、DISTINCTROWに関しては、よく分からない・・・
基本的に、データベースに取り込む時に、主キーが自動的に
割り振られ、レコードとして絶対に重複しないようななっているのが
データベースだと思います。
http://makotowatana.ld.infoseek.co.jp/access/das …
でも、「フィールドの重複のみでなく、レコード全体で重複しているデータを除外します。」と書かれています。もうこの段階で、理解できません。
意図的に、同じレコードを10行データベースに取り込みました(tab delimita のテキストファイルをimport)。
取り込んだ時点で、Accessは勝手に、IDなるものを付与し、レコードとしては、10行、別々の物となっています(Tableで見る上では)。
このテーブルに対し、ID以外の全fieldをクエリに登録し、DISTINCTROWを実施しても、10行が表示されます(目で見えるのは、全く10行とも同じ内容です)。DISTINCTROWではなく、DISTINCTを実施すると、1行だけとなります。
つまるところ、下記の記述が理解できないのです。
「DISTINCTROW 述語は、クエリで使用するすべてのテーブルからではなく、一部のテーブルからフィールドを選択した場合のみ有効です。このため、クエリの中にテーブルが 1 つのみしかない場合、またはすべてのテーブルからフィールドを出力する場合は、DISTINCTROW 述語は無視されます。」

仮に、そうだ、そうだとして、その時、DISTINCTとDISTINCTROWの違いは何なのか? と言う疑問が出てきてしまいます。

宜しくお願いいたします。

補足日時:2007/02/12 22:56
    • good
    • 0
この回答へのお礼

教えていただいたサイトでの情報から、更に1歩進むことができ、
本件、解決しました。DISTINCTROWは、「もし、レコード全体を裏で見て
それが重複していないのであれば、目の前のクエリの結果が、一見、重複していたとしても、重複を許して、そのまま表示する」と言うものなのですね。 これが、DISTINCTだと、とにかく重複していれば、消す。有無を言わさず消す。 
また、宜しくお願いいたします。

お礼日時:2007/02/16 00:27

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


このQ&Aを見た人がよく見るQ&A