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

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

ただいまの
回答率

90.50%

  • SQL

    2394questions

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

  • Access

    431questions

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

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

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 7,027

otojiro

score 17

前提・実現したいこと

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

通販事業をしており、商品の仕入から販売までのデータベースを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|仕入日|商品名|・・・・
|グループ化|最小|グループ化|グループ化|・・・・

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

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

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

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

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/01/11 14:20

    motuo様
    図解でわかりやすいご解説ありがとうございました。
    今までのACCESSでテーブル構造等単純なものしか作っていなかったので、クエリを基にクエリを作るという発送がありませんでした。
    開設通り設定してみましたところ、希望通りのデータ一覧を得ることができました。
    本当にありがとうございます。

    あとは一覧に|パソコン|他3商品|などと表示させる作業を頑張ってみます。
    「t_仕入」に紐づけられた「t_仕入詳細」のレコードが何件あるかをデータとして「t_仕入」に持たせてやることしか思いつきませんが頑張ってみます。ありがとうございます。

    キャンセル

  • 2017/01/11 14:35

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

    キャンセル

  • 2017/01/11 15:09

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

    キャンセル

  • 2017/01/11 15:10

    良かったです。

    キャンセル

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

  • ただいまの回答率 90.50%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • SQL

    2394questions

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

  • Access

    431questions

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