データベース パソコン(ソフト)

【Access】SQLでデータが重複して表示される謎は、DISTINCTで解決した!

クエリでデータが重複表示

やりたい事は、

ポイント

2つのテーブルを単純に連結した状態から、片方のテーブルを基準に、もう片方がテーブルから一致したデータを引っ張って表示させたいというシンプルなクエリー

になります。

データの重複表示

 

8件のデータを元にクエリーを作成して表示させると、16件表示されてしまいます。

データの重複表示

つまりデータが重複表示されてしまうのです。

 

「DISTINCT」をSQLビューで付けて解決

重複を解決する方法は、クエリデザインから、

解決策

SQLビューに変更して、「DISTINCT」を追加するだけ

 

ちょっと調べてみると、クエリデザインでもクエリプロパティから、「固有の値」というところを「はい」にすれば、

「DISTINCTROW」を追加した事と同じになるようです。

固有のレコード

 

以前に、「DISTINCTROW」を付けて問題を解決した事がありましたが違いはなんでしょうか?

クエリデザインでは、「固有のレコード」を「はい」にすれば、追加されるようです。

【Access】2つのテーブルから一致(重複)したデータだけ削除するSQLコードの謎

 

 

DISTINCTROWとかDISTINCTって何?

マイクロソフトのサポートページに「ALL、DISTINCT、DISTINCTROW、TOP 述語」ということで詳細な説明が掲載されていましたが、難しすぎて意味がわかりませんでした。

いろいろと調べて自分が簡単に解釈した事は、

DISTINCT」の場合は、元となるテーブルデータが重複しない

DISTINCTROW」の場合は、連結したテーブルも含めたレコードが重複しない

というような理解をしました。間違っていたらごめんなさいm(__)m

 

今回の場合は、「DISTINCT」でクエリをかければ、元テーブルのレコード数8件なので、8件の表示がされました。

「DISTINCTROW」にすると、重複は解消されずに、16件の表示になりました。

 

ココに注意

なんかフワフワした理解

なのですが、希望する数値が出せる方を使えば何とかなるってことに自己納得しました。

-データベース, パソコン(ソフト)
-, , , , , ,

Translate »

© 2024 PCTips