質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

解決済

1回答

24415閲覧

ACCESS クエリでの一部重複?の除外方法について

otojiro

総合スコア35

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

0クリップ

投稿2017/01/11 03:43

###前提・実現したいこと
こんにちは、質問タイトルが適格でないかもしれませんが宜しくお願いいたします。

通販事業をしており、商品の仕入から販売までのデータベースをACCESSの勉強をしながら作っております。

質問に際して必要なテーブル構成を抜粋しますと。

【t_商品】
・ID
・商品名
・サイズ
・色等

【t_仕入】
・ID
・仕入日
・仕入先
・仕入総額

【t_仕入詳細】
・ID
・仕入ID
・商品名(商品ID
・仕入単価
・仕入数

各テーブルにはもう少しフィールド数がございますが、とりあえず上記のような構成です。
商品登録フォームや、仕入処理のフォームは作り、データの登録、更新、表示も問題なく動作しております。

今回仕入一覧フォームを作成し、仕入データの一覧表示をさせたいと思っております。
もちろん、一度の仕入れ業務で複数の種類の商品を仕入れた場合は、一つの「t_仕入」レコードには仕入IDをもとに、複数の「t_仕入詳細」のレコードがぶら下がることになりますので、普通に「f_仕入一覧」フォームを作ってレコードソースを設定していくと以下のようなリストになるかと思います。。

|仕入ID|仕入詳細ID|仕入日|商品名|・・・・
|1|1|2017/01/01|パソコン|
|1|2|2017/01/01|キーボード|
|1|3|2017/01/01|プリンター|
|1|4|2017/01/01|キーボード|
|2|5|2017/01/04|液晶テレビ|
|3|6|2017/01/05|電気ケトル|
|4|7|2017/01/06|電子レンジ|
|4|8|2017/01/06|キーボード|
|5|9|2017/01/07|デスクライト|

現状このような表示では一覧表示できています。

それを以下のような一覧に変更ししたいのですが、うまくいかず今回質問させていただきました。

希望する一覧

|仕入ID|仕入詳細ID|仕入日|商品名|・・・・
|1|1|2017/01/01|パソコン|
|2|5|2017/01/04|液晶テレビ|
|3|6|2017/01/05|電気ケトル|
|4|7|2017/01/06|電子レンジ|
|5|9|2017/01/07|デスクライト|

表示内容は、一つの仕入IDに対して表示するのは一件だけ(仕入詳細IDが一番小さいもの)。

ゆくゆくは

|仕入ID|仕入詳細ID|仕入日|商品名|備考|・・・・
|1|1|2017/01/01|パソコン|その他3商品|
|2|5|2017/01/04|液晶テレビ||
|3|6|2017/01/05|電気ケトル||
|4|7|2017/01/06|電子レンジ|その他1商品|
|5|9|2017/01/07|デスクライト||

このような一覧リストを作ろうと思っております。

###試したこと
一覧フォームのデザインビューでクエリの種類をクロス集計等にして、集計欄を

|仕入ID|仕入詳細ID|仕入日|商品名|・・・・
|グループ化|最小|グループ化|グループ化|・・・・

などとやってみたのですが、上記の最初のリストになってしまいます。

質問するにあたり説明不足なところがあるかもしれませんがよろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

※仕入詳細のIDがユニーク、という前提で進めます。
入力テーブル
仕入
イメージ説明
仕入詳細
イメージ説明

①仕入IDでグループ化し、最小の仕入詳細IDを取得するクエリを作成する。
クエリ
結果(仕入詳細のIDの最小が取得されています。)
結果

②このクエリと仕入詳細及び商品を結合して、新たなクエリを作る
イメージ説明

結果
イメージ説明
この様な形で如何でしょうか?

投稿2017/01/11 04:37

motuo

総合スコア3027

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otojiro

2017/01/11 05:20

motuo様 図解でわかりやすいご解説ありがとうございました。 今までのACCESSでテーブル構造等単純なものしか作っていなかったので、クエリを基にクエリを作るという発送がありませんでした。 開設通り設定してみましたところ、希望通りのデータ一覧を得ることができました。 本当にありがとうございます。 あとは一覧に|パソコン|他3商品|などと表示させる作業を頑張ってみます。 「t_仕入」に紐づけられた「t_仕入詳細」のレコードが何件あるかをデータとして「t_仕入」に持たせてやることしか思いつきませんが頑張ってみます。ありがとうございます。
motuo

2017/01/11 05:35

①で作ったクエリに仕入IDのカウントを追加してあげれば良いのではないでしょうか?もしくは商品IDをカウントすれば1仕入あたりの商品の数が取れますよ。 それで②のクエリで 「他: [IDのカウント]-1」みたいな感じにすれば、良いと思います。 もし、ある程度、試して上手く行かなければ別質問として立てて貰えば。
otojiro

2017/01/11 06:09

ありがとうございます。自分でも仕組みをわかりやすいように、もう一つクエリを作り、t_仕入のID、t_仕入詳細のIDでリレーションを組んで、集計をカウントにしてみたら上手くいきました。このクエリを先ほど解決させていただいたクエリのソースに追加して無事解決できました。本当にありがとうございます。
motuo

2017/01/11 06:10

良かったです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問