0

件名があまりにも奇妙に混乱しないことを願っています。

そのため、設計者のマネージャーに基づいてテーブル(設計時間)からデータを選択するクエリがあります。マネージャー番号はフォームで収集されます。クエリデザイナを使用していますが、この列には次のものがあります。

Field: Managers_ID: ID, 
Table: Managers
Criteria: [Forms]![SelectManagerAndDateRange]![ManagerNumber]

Managersテーブルには、一意の識別子として「ID」があります。

このクエリの唯一の欠点は、マネージャー自身が働いたデザインアワーが含まれていないことです。クエリデザインビューで、追加するレコードの2番目の基準を追加できますか?結果をさらに絞り込む方法は知っていますが、この場合はさらに追加したいと思います。Managersテーブルで問題のManagerのPersonIDを検索できますが、次に、DesignHoursテーブルでPerson=そのpersonIDであるすべてのレコードを検索します。

私はAccess2003を使用しています。はい、わかっています。今年後半に2010年にアップグレードする予定です。データはMDBとして保存されます。

どんな助けでも大歓迎です。

編集:要求に応じてスクリーンショット 問題で言及されている関係と基準。 丸で囲んだ基準が期待どおりに機能していません。

4

2 に答える 2

1

あなたを助けるかもしれない一般的な答え:両方のクエリからの戻りが同じ数のフィールドを持っている場合、最も簡単な方法はユニオンステートメントを使用することです。

[SQLクエリ1]

連合

[SQLクエリ2]

[ステートメントによる順序]

Unionを使用する場合、最初のクエリと同じ量で同じタイプである限り、2番目のクエリのフィールドの名前は重要ではないことに注意してください。注文するときは、最初のクエリのフィールド名を使用してください。

于 2012-04-06T01:30:05.413 に答える
0

UNIONクエリは、同じ構造で異なるテーブルからデータを取得する場合に使用することを目的としています。

あなたの状況では、最善の解決策は、次のようなJOINクエリだと思います。

SELECT M.field1, M.field2, M.field3, H.field1, H.field2 ...whatever fields you need
FROM Managers as M
LEFT OUTER JOIN [Design Hours Table] as H
  ON H.Person = M.PersonID
ORDER BY ... whatever order you want

このクエリをレポートのRowSourceとして使用して、Managersテーブルのすべてのフィールドで結果をグループ化するようにAccessに指示できます。

ただし、それをフォームに使用している場合は、フォームとサブフォームの組み合わせを使用できます。

元のクエリをフォームのRowSourceとして設定し、必要なすべてのフィールドとラベルを使用してデザインします。次に、サブフォームを挿入します。

サブフォームの追加

次に、Accessに既存のテーブルを使用するかサブフォームデータのクエリを実行するように指示し、そのためにDesign Hoursテーブルを選択し、フィールドPersonIDを使用してManagerの各レコードのDesignHoursにレコードを表示するように選択します。

ここで、コメントしたい別の問題があります。マネージャーは個人であるため、マネージャーテーブルにPersonIDフィールドがあります。これは正しいです。設計で正しくないのは、ManagersテーブルにFirstName列とLastName列が存在することです(実際にはテーブルではなくクエリである場合を除く)。その理由は、PersonIDが一連のプロパティを定義し、その中にFirstNameLastNameが含まれているためです。したがって、設計では、 PersonID = 2013、FirstName = John、LastNameを持つマネージャーになる可能性があります。=O'ConnorとPeopleテーブルのID2013は、 FirstName = Peter、LastName = Sellersを参照していますが、これは矛盾します。

また、フィールドPersonIDは、このテーブルのPKとして機能するのに最適であるため、このテーブルにIDは必要ありません。

PeopleテーブルからNameとSurNameを取得するため、結合は次のようになります。

SELECT M.field1, M.field2, M.field3, P.FirstName, P.LastName, H.field1, H.field2 ...whatever fields you need
FROM (Managers as M
INNER JOIN People as P ON P.ID = M.PersonID)
LEFT OUTER JOIN [Design Hours Table] as H
  ON H.Person = M.PersonID
ORDER BY ... whatever order you want

よろしく、

于 2013-08-14T09:28:55.103 に答える