Microsoft Access 掲示板

テーブルの結合の方法を教えて下さい / 2

20 コメント
views
4 フォロー
2
hiroton 2024/03/22 (金) 16:57:09 0858e@f966d

質問の具体例に相当する実際のシステムの具体例が思い浮かびませんが、そっくりそのままやりたいことがそれならそういうものですよ

ただし、

例えばひらがな3、ひらがな4、、、と増えていくと、

のような、「フィールドの数が変動するようなデータ」は通常想定しません。データベース設計としてはNGです
設計段階で「最大個数としてn個ある」のような場合は、その仕様によっては連番で管理されるようなフィールド構造を取る場合もあります

同様の内容が増えていくようなデータの場合は、そのデータ分だけレコード(行)が増えるような形にします

T_ひらがな表示

ID管理IDひらがなNoひらがなID
1111
2122
1211
2222
3233

質問中の「T_ひらがな表示」内の「ID」が、ここで提示した「管理ID」に相当します。「管理ID」が同じレコードを一つのグループとみなす形になります

このように生成したデータを、実際の表示の際に「『管理ID』が同じものを一つのレコードとして扱いたい」場合には、クエリでそのように整形します。手法はいくつかありますが、クロス集計クエリを使うのが一般的でしょう

通報 ...
  • 4
    名前なし 2024/03/22 (金) 17:21:48 23e8e@44ebd >> 2

    質問は実際のDBを簡略化したものです。
    FXのトレード日記をAccessで作成しておりまして、


    M_取引根拠

    ID根拠
    1割安感
    2割高感
    3プライスアクション
    4水平ライン
    5トレンドライン

    このマスターテーブルを値集合ソースにした3つのコンボボックス(連結列:1、名前:cmb_取引根拠1、cmb_取引根拠2、cmb_取引根拠3)の値をT_トレード日記(例でいうT_ひらがな表示)の取引根拠1、取引根拠2、取引根拠3フィールドに格納します。

    このT_トレード日記とM_取引根拠を結合したクエリをレコードソースにして、レポート上で、「割安感」「割高感」といった風に表示したいという感じです。

    実現の方法は、自己解決の方法で問題ないということでしょうか?

  • 5
    hiroton 2024/03/22 (金) 17:43:42 0858e@f966d >> 2

    どの程度を求めるか?ですが、「あまりよくはない」「そうはしないほうが無難」ですかね

    困る状況(データベース的におかしい使い方)として、「根拠に〇〇が含まれているトレードを拾い出したい」みたいな要求に応えにくくなります

    正規化されていれば、「根拠」フィールドだけを対象にフィルタを掛ければいいですが、横並びで1,2,3としてしまうと、その3つのフィールド全てに対して条件(それぞれのパターンで矛盾しないような)を設定する必要が出てきます。このような運用はデータベース的にNGです

    なので、「仕事のシステム」ならそうはしません。「個人使用」ならまぁACCESSでちょっと作っただけだしこんなんでもいいかとしてもいいとは思います(何かやろうとすると間違いなく苦労することになりますが)

  • 12
    hiroton 2024/03/25 (月) 15:18:07 ef9cd@f966d >> 2

    いまさら気づいたけど>> 2のテーブル例ミスってます
    IDの列は単に連番のつもりでした「T_ひらがな表示」の主キー想定です