• ベストアンサー

Access2000で、違う列の重複を検索したい

1チームは2人からなり、同じ人が別のチームに参加できません。 1レコードにA氏、B氏、2レコードにB氏、C氏とエントリーがあったのですが、B氏は重複しているので、重複レコードとして検索したいのですが、良い方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.5

>実は氏名欄が3列あります。・・・3列もあるとどうやっていいものやらわかりません 単純です。 SELECT テーブル名.チーム名, テーブル名.氏名1 FROM テーブル名 UNION SELECT テーブル名.チーム名, テーブル名.氏名2 FROM テーブル名; にもう一つフィールドを追加すれば良いんです。 SELECT テーブル名.チーム名, テーブル名.氏名1 FROM テーブル名 UNION SELECT テーブル名.チーム名, テーブル名.氏名2 FROM テーブル名 UNION SELECT テーブル名.チーム名, テーブル名.氏名3 FROM テーブル名; これで3列結合できます。 あとはこのユニオンクエリを元に重複クエリを作れば完成です。

hima3
質問者

お礼

ありがとうございます。 お礼が遅くなり失礼しました。 できました。丁寧にご指導ありがとうございました。

その他の回答 (4)

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.4

>ユニオンクエリ?はどうやってやるのでしょうか まず選択クエリを作ります。ウィザードがでますので簡単に出来ます。 例えばテーブルのフィールドがチーム名・氏名1・氏名2とした場合 テーブル名を指定して進めチーム名と氏名1を表示するように進め保存します。 そのクエリをデザインで開きメニューの編集からか右クリックでSQLビューを選択すると SELECT テーブル名.チーム名, テーブル名.氏名1 FROM テーブル名; となっているはずです。 そのSQLビューにUNIONでもう一度テーブル内からフィールドを結合する記述を下記のように追加します。(UNION以降が追加する記述) SELECT テーブル名.チーム名, テーブル名.氏名1 FROM テーブル名 UNION SELECT テーブル名.チーム名, テーブル名.氏名2 FROM テーブル名; そして保存します。 保存したクエリを開くとチーム名と一つのフィールドに氏名1・氏名2両方表示するクエリが出来ます。 保存したUNIONクエリを使ってクエリの新規作成で重複クエリウィザードを使って作ったUNIONクエリを選択しウィザードに従って進めれば作れます。 これが簡単なやり方です。

hima3
質問者

お礼

詳しい回答をありがとうございます。 ユニオンクエリはできました。そんなやり方があるとは知らず勉強になりました。 ただ、実は氏名欄が3列あります。ユニオンクエリで同列にデータを持ってきて、同列の重複を探すというのは出来そうですが、3列もあると、どうやっていいものやらわかりません。頭が混乱してきました。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

#2です。 ●列分解は「選択クエリウイザード」 ●各々の列内重複は、「重複クエリウイザード」でできるようです。 ●#2で書いた、(A列対B列の重複について) 「そしてA,Bクエリを対象に重複クエリウイザードで発見できないですか。」 はクエリの「不一致クエリウイザード」で「Is Not NUll」(通常はIs Null)にすればできそうです。 訂正します。

hima3
質問者

お礼

また回答をありがとうございます。 各々の列内重複は、重複クエリウイザードでできました。でも、別列との重複は、どうもできません。もう少し詳しく教えていただけないでしょうか。お手数をおかけします。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

正面からの回答ではないのですが、エクセルにエクスポートして(60000以下と仮定する) A,B列 a c s x d v c g a o f d g k h e としてC列にでも =IF(OR(COUNTIF($A$1:A1,A1)>1,COUNTIF($B$1:$B$10,A1)>=1),1,"") と入れて式を下方向に複写する。$B$10の10は最下行を指定に変えてください。 結果はd、c、a、gの行に1が出ます。 B列側からもB列内だけでの重複チェックをCountIFでチェック必要(略)。 アクセスでの回答なら、2フィールドなら(少ない数なら)、 クエリでAフィールドだけの選択クエリ、Bフィールドだけの選択クエリを作って、各1列ずつばらして2クエリをつくる。 そしてA,Bクエリを対象に重複クエリウイザードで発見できないですか。 Aクエリ、Bクエリ内での重複発見はAとAコピーなどで重複クエリウイザードが使えないでしょうか。 わたしもテストしてみます。

hima3
質問者

お礼

回答をありがとうございます。また一緒に考えてくださり大変助かります。 エクセルへエクスポートして関数を当てることはやってみましたが、件数が膨大なためか、パソコンが固まってしまうのであきらめざるを得ません。

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.1

例えばテーブルに ID Member1 Member2 1 A     B 2 B     C とした場合 ユニオンクエリでMember1とMember2を結合させて重複する値を抽出すれば良いのではないでしょうか。

hima3
質問者

お礼

回答をありがとうございます。 ユニオンクエリ?はどうやってやるのでしょうか。素人なのでもう少し詳しく教えていただけると助かります。

関連するQ&A