• ベストアンサー

Accessのクエリについて

ふたつのテーブルから抽出したユーザー名が重複してしまいました。それを一つだけに絞ってユーザーの件数の合計を出したいのですが、方法はありますか? 私がとった方法はクエリプロパティのレコードを「はい」にしましたがうまくいきませんでした。 それでピボットテーブルで集計をしましたが、やはりテーブルデータシートで確認できたら便利に思います。 どなたかお知恵をお貸しください。 よろしくお願いいたします。

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

  • ベストアンサー
  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.1

Accessにはこれを一度に処理する機能はありません 重複をなくしたものを作ってからカウントしてやることになります

375k
質問者

お礼

この方法でやって解決できました。 ありがとうございました。

その他の回答 (3)

noname#140971
noname#140971
回答No.4

? DBLookup("select count(nm) as cnt from (select 顧客名 as nm from Table1 union select 顧客名 from Table2)") 3 よって、先の回答はキャンセル!

375k
質問者

お礼

重複クエリを使って解決してみたのですが、Husky2007さんがアドバイスくださった方法でも試みてみたいと思います。 ありがとうございました。

  • kurodai2
  • ベストアンサー率38% (77/202)
回答No.3

ユーザー名・・同姓同名があれば 名前は不味い気がしますが Table1 井上 達也 中野 浩二 斉藤 隆 Table2 井上 達也 斉藤 隆 山田 太郎 求める件数 = 4 select count(nm) as cnt from (select name as nm from Table1 union select name from Table2)

noname#140971
noname#140971
回答No.2

<Table1> ID___顧客名 1____鈴木 一郎 2____山田 太郎 <Table2> ID___顧客名 1____村上 信次 2____鈴木 一郎 3____鈴木 一郎 <クエリ1> ユニークな顧客数 3 まあ、色々と工夫すればクエリも作れないことはないです。 [イミディエイト] ? DBLookup("SELECT COUNT(非重複顧客名) FROM(SELECT DISTINCT 顧客名 AS 非重複顧客名 FROM Table1)") 2 ? DBLookup("SELECT COUNT(非重複顧客名) FROM(SELECT DISTINCT 顧客名 AS 非重複顧客名 FROM Table2)") 2 ? DBLookup("SELECT COUNT(テーブル間重複顧客名) FROM(SELECT DISTINCT Table1.顧客名 AS テーブル間重複顧客名 FROM Table1, Table2 WHERE Table1.顧客名=Table2.顧客名)") 1 ? DBLookup("SELECT COUNT(テーブル間重複顧客名) FROM(SELECT DISTINCT Table2.顧客名 AS テーブル間重複顧客名 FROM Table1, Table2 WHERE Table2.顧客名=Table1.顧客名)") 1 重要なことは、2+2-(1+1)ではなく、2+2-1ということです。 2+2-(1+1)/2かなとも思いましたが、多分、2+2-1でいいです。 そういうことで、クエリは次のようになります。 SELECT DBLookup("SELECT COUNT(非重複顧客名) FROM(SELECT DISTINCT 顧客名 AS 非重複顧客名 FROM Table1)")+DBLookup("SELECT COUNT(非重複顧客名) FROM(SELECT DISTINCT 顧客名 AS 非重複顧客名 FROM Table2)")-DBLookup("SELECT COUNT(テーブル間重複顧客名) FROM(SELECT DISTINCT Table1.顧客名 AS テーブル間重複顧客名 FROM Table1, Table2 WHERE Table1.顧客名=Table2.顧客名)") AS ユニークな顧客数; ここでは、自作関数 DBLookupを利用しています。 が、一応、クエリには違いありません。 Public Function DBLookup(ByVal strQuerySQL As String) As Variant On Error GoTo Err_DBLookup   Dim DataValue   Dim rst As ADODB.Recordset   Set rst = New ADODB.Recordset   With rst     .Open strQuerySQL, _        CurrentProject.Connection, _        adOpenStatic, _        adLockReadOnly     If Not .BOF Then       .MoveFirst       DataValue = .Fields(0)     End If   End With Exit_DBLookup: On Error Resume Next    rst.Close    Set rst = Nothing    DBLookup = DataValue    Exit Function Err_DBLookup:    MsgBox "SELECT 文の実行時にエラーが発生しました。(DBLookup)" & Chr$(13) & Chr$(13) & _       "・Err.Description=" & Err.Description & Chr$(13) & _       "・SQL Text=" & strQuerySQL, _       vbExclamation, " 関数エラーメッセージ"    Resume Exit_DBLookup End Function