ここから本文です

マイクロソフトACCESS(アクセス)に関して教えてください。 クエリでグループ...

tat********さん

2019/1/2418:41:59

マイクロソフトACCESS(アクセス)に関して教えてください。


クエリでグループ化を行う際に、フィールドの一致率でグループ化することは可能でしょうか。

可能であれば具体的な手法を教えていただければ幸いです。

例えば

、5つのフィールド値の内、3つの値が同じ場合はグループ化をするといった場合です。

閲覧数:
77
回答数:
2

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

nora1962jpさん

2019/1/2510:04:22

主キー項目があるかどうか。
kabさんの回答が元ですが

SELECT
主キー項目
FROM
(SELECT 主キー項目, 項目A AS 比較項目 FROM T_TEST
UNION ALL
SELECT 主キー項目, 項目B AS 比較項目 FROM T_TEST
UNION ALL
SELECT 主キー項目, 項目C AS 比較項目 FROM T_TEST
UNION ALL
SELECT 主キー項目, 項目D AS 比較項目 FROM T_TEST
UNION ALL
SELECT 主キー項目, 項目E AS 比較項目 FROM T_TEST)
GROUP BY 主キー項目, 比較項目
HAVING COUNT(*) >= 3

でフィールド3つ以上が同じ値の主キー項目を抽出。
元テーブルの全項目必要なら、元テーブルと上記のSQLをINNER JOINする。

というか元々フィールドを横に展開して持つという設計が問題な気もしますが。

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜1件/1件中

2019/1/2419:34:45

いろいろ考えてみたら、クエリもダメだな。
VBAで実装するかしか、手がないように思うけれどどうだろう?

(5*4*3)/(3*2) = 10

項目A ~ 項目E と5つの項目あったとして、全部で10通りかな?
で、仮に項目A ~ 項目C の3つの値が同じ場合を考える。

SELECT
項目A,
項目B,
項目C
FROM
T_TEST
WHER 項目A = Val
AND 項目B = Val
AND 項目C = Val

※Val ← 同じ値

これで3つの項目が同じ場合を絞り込む
ただし!
値:Val ってのがどれだけあるか・・・ なんだよね。
だから最初に項目A ~ 項目C で、どれだけ[同じじゃない]値があるか・・・ を、調べなければいけないわけだ。

ついでに項目A~項目Eまでで調べてみる。
なのでUNIONで一つのテーブルを作っちゃう。

SELECT
項目3つ
INTO T_TEST2
FROM
(SELECT 項目A AS 項目3つ FROM T_TEST
UNION
SELECT 項目B AS 項目3つ FROM T_TEST
UNION
SELECT 項目C AS 項目3つ FROM T_TEST
UNION
SELECT 項目D AS 項目3つ FROM T_TEST
UNION
SELECT 項目E AS 項目3つ FROM T_TEST)

これだと重複の値はカットされるはずなんだよな。
そしてVBAで・・・

SELECT 項目3つ FROM T_TEST

このSQLの値をレコードセットで格納して、ループで回す

SELECT
項目A,
項目B,
項目C
FROM
T_TEST
WHER 項目A = rs("項目3つ")
AND 項目B = rs("項目3つ")
AND 項目C = rs("項目3つ")

これだと重複したレコード出ちゃうけれど、どれも同じレコ―ドだからいちいちグループ化することはないよな・・・
そして、この後・・・
項目A, 項目B, 項目D
項目A, 項目B, 項目E
項目A, 項目C, 項目D
項目A, 項目C, 項目E
項目A, 項目D, 項目E
項目B, 項目C, 項目D
項目B, 項目C, 項目E
項目B, 項目D, 項目E
項目C, 項目D, 項目E

だけかな・・・ の、組み合わせも全部調べるってことをVBAでやらないとダメじゃないのかなぁ・・・


ちょっとロジックというか、考え方みたいなのだけ示してみたつもりですが、どうでしょうか?

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる