2016-07-23 7 views
1

私はマージする必要がある別のデータを持つ2つのテーブルがあります。注文番号、名前、種類、商品などの類似点があります。しかし、注文データ、彫刻などのデータも別々に用意されています。Accessで2つのテーブルをマージしていますか?

私は2つの別々の追加クエリをAccessでマージされたテーブルにしますか?または1つのクエリを追加しますか?それとも、データを別にしておきますか?

私はアクセスするのが初めてで、これにアプローチする最善の方法を見つけようとしています。

答えて

0

2つのテーブルを1つにまとめると、データベースを使用する目的が完全に無効になり、その時点でExcelを使用するほうがよいでしょう。できるだけ論理的な線に沿ってデータを分割して、X氏が特定の製品に対して行ったすべての注文を見つけることができます。その場合、顧客、注文、彫刻などのために別々のテーブルを用意することになります。

デザインの観点からは、各テーブルが共通するフィールドを3番目の「マスター」テーブルに配置し、そのテーブルから既存のテーブルへの関係を作成し、メインに転送されたデータを削除することがベストプラクティスですテーブル(マスターテーブルと共通でなければならないプライマリキーを除く)

マスターテーブルを作成するには、テーブル作成クエリを使用してテーブルの1つに基づいてマスタテーブルを生成し、次に追加テーブルを使用してマスタテーブルに他のテーブル。最後に、各テーブルのクエリを削除すると、両方の元のテーブルに冗長なデータがなくなります。

しかし、I 強くは、Microsoftのチュートリアルを使用して、NorthWindサンプルデータベースをダウンロードするようにして、適切に構造化されたデータベースがどのように見えるかを知ることをお勧めします。初心者のアクセスの学習曲線は非常に急であり、よく構築されたサンプルデータベースはほとんどの必要条件です。

データベースのバックアップを作成し、正しく再生されるまで再生します。あなたが何をしているかを知るまでは、ライブデータで遊ぶのを間違えないでください。

+0

私はこの回答が気に入っています、私の唯一の懸念は、ユーザーが手動でインポートするテキストファイルを使って作業していることです。エンドユーザーは、インポート、レポートの実行、および繰り返しを除き、データベースとのやりとりは行いません。私はアクセスが簡単にこのプロセスを管理できると信じています。唯一の問題は、連絡先やデータベースの他のセクションを分離して照会でアクセスするのではなく、注文番号を参照すればよいということです。このシナリオではライブデータはありません。私は、これらのプログラムのいずれかに習熟していないユーザーのために、データの基盤を作成しています。 – Fortune

0

どちらのテーブルにも同様のフィールドがあるので、ユニオンクエリを使用して両方のテーブルからOrder numberフィールドを取得します。ような何か:

SELECT tbl_Delivery_Details.OrderNo 
FROM tbl_Delivery_Details 
GROUP BY tbl_Delivery_Details.OrderNo 
UNION 
SELECT tbl_Delivery_Header.[Order number] 
FROM tbl_Delivery_Header 
GROUP BY tbl_Delivery_Header.[Order number]; 

これは、配信の詳細テーブルからと配信ヘッダテーブルから注文番号を取得し、各注文番号の唯一のインスタンスを1つのリストにそれらをマージします。クエリを保存します。

このクエリを新しいクエリで使用できます。 2つのテーブルをこのクエリに持ち込み、どちらかのテーブルから必要なフィールドを挿入します。

ユーザーがテーブルにレコードを追加すると、次回の実行時にユニオン・セレットのクエリに追加されます。

bb

0

あなたのやりたいことによって異なります。テーブルA(レコード50個)とB(レコード75個)のレコードがあり、両方のテーブルに同じような列のOrderIDがあるとします。

クエリ1:あなたは次の2つのクエリを実行し、BからAとレコード(行)からレコード(行)を組み合わせることにより、125件の合計レコードを持つテーブルを作成したい場合 :行の追加は

SELECT A.ORDER_NUMBER, A.TEXT_FIELD1 as DATA INTO C 
FROM A; 

クエリ2:

INSERT INTO C (ORDER_NUMBER, DATA) 
SELECT B.ORDER_NUMBER, B.TEXT_FIELD2 
FROM B; 

追加は列:で...

SELECT B.ORDER_NUMBER, A.TEXT_FIELD1, B.TEXT_FIELD2 INTO C 
FROM A RIGHT JOIN B ON A.ORDER_NUMBER = B.ORDER_NUMBER; 

:あなたはBの列にAから列を追加している75件の合計レコードを持つテーブルを作成したい場合は、その後、次のクエリを実行します。 、あなたは次のクエリを実行して、50のレコードの合計で新しいテーブルCAの列にBの列を追加することができ、同様の方法:

SELECT A.ORDER_NUMBER, A.TEXT_FIELD1, B.TEXT_FIELD2 INTO C 
FROM A LEFT JOIN B ON A.ORDER_NUMBER = B.ORDER_NUMBER; 
関連する問題