0

Microsoft Access 2003 でクエリを作成していますが、問題が発生しました。私は新しいです!

私は2つのテーブルを持っています。最初のテーブルには、 nameproperty namecountry stateを含むレコードのリストがあります。2 番目のテーブルには、プロパティ名、プロパティ内のユニット数、およびプロパティの国の州のリストがあります。

最初のテーブルのレコード数を州ごとに数えながら、州内のプロパティのユニット数を合計します。

私が遭遇したのは、ユニットの数を合計すると、ユニットが繰り返されるということです!

たとえば、

表1:

名前 | 状態 | プロパティ名

ミスター1 | 状態 A | 建物AAA

ミスター2 | 状態 A | 建物AAA

ミスター3 | 状態 A | 建物BBB

ミスター4 | 状態 B | 建物 XXX

ミスター5 | 状態 B | 建物 XXX

表 2:

プロパティ名 | 状態 | ユニット数

建物AAA | 状態 A | 100

建物BBB | 状態 A | 50

建物 XXX | 状態 B | 20

私の結果:

状態 | ユニット数 | レコード数

状態 A | 250 | 3

状態 B | 40 | 2

私が望む結果:

状態 | ユニット数 | レコード数

状態 A | 150 | 3

状態 B | 20 | 2

4

1 に答える 1

2

拡大した

Access クエリ ビルダーを使用していると仮定すると、次の 3 つの Select クエリを作成する必要があります。

1) Table1 は、最初のクエリのソース テーブルになります。State フィールドをクエリで 2 回使用します。1 回目は Group By フィールドとして、2 回目は Count フィールドとして使用します。(レコードの数だけに関心があるため、どのフィールドもカウントに使用できます。) 3 番目のクエリで使用するためにクエリを保存します。

ここに画像の説明を入力

2) Table2 は、2 番目のクエリのソース テーブルになります。State フィールドを Group By フィールドとして使用し、Units フィールドを Sum フィールドとして使用します。このクエリも保存します。

ここに画像の説明を入力

3) 3 番目のクエリは、情報をまとめます。ソースには、1 番目と 2 番目のクエリを使用し、State フィールドでそれらを結合します。(いずれかのクエリから) State フィールドを Group By フィールドとして選択し、最初のクエリから CountOfState フィールドを Sum フィールドとして選択し、2 番目のクエリから SumofUnits フィールドを Sum フィールドとして選択します。

ここに画像の説明を入力

最終結果を生成する際に Access によって実行される実際の作業量は変わりませんが、基になる SQL を編集することで、3 つのクエリを 1 つのクエリに統合できます。

新しいクエリは、INNER JOIN ステートメントの両側にある 3 番目の最終結果クエリに Table1 クエリと Table2 クエリを挿入することによって生成されました。新しいクエリの T1 と T1 は、埋め込みクエリのエイリアスであり、これらのクエリのフィールドを参照する際のあいまいさを排除します。

Query Builder を使用して新しいクエリを作成することはできません (ただし、元の 3 つのクエリはその原料を提供します)。代わりに、クエリ ビルダの SQL ビューで SQL を作成/貼り付け/編集する必要があります。

    SELECT T1.State AS State,
           Sum(T1.CountOfState) AS Records, 
           Sum(T2.SumOfUnits) AS Units
    FROM 
          (SELECT Table1.State, 
                  Count(Table1.State) AS CountOfState
           FROM Table1
           GROUP BY Table1.State) T1
    INNER JOIN 
           (SELECT Table2.State, 
                   Sum(Table2.Units) AS SumOfUnits
            FROM Table2
            GROUP BY Table2.State) T2
    ON T1.State = T2.State
    GROUP BY T1.State;
于 2012-12-25T13:15:37.843 に答える