teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

説明追記

2020/04/04 11:04

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -18,8 +18,6 @@
18
18
  仕入先が複数ある場合のみ伝票No.2として下一桁を追加している状態です。
19
19
  ですので仕入先がひとつの場合は伝票No.2は空欄です。
20
20
 
21
- > 伝票No.のみでリレーションシップを築くと仕入先が複数ある場合の仕入先の表示がおかしくなってしまいます。
22
-
23
21
  ひょっとして現状のテーブルは下記のようになっているといことでしょうか。
24
22
 
25
23
  **売上一覧**
@@ -35,5 +33,20 @@
35
33
  | B株式会社 | 10010 | 100101 |
36
34
  | C株式会社 | 10010 | 100102 |
37
35
 
38
- こうだとして、これかのような表示をご希望なのしょうか
36
+ こうだとし、テーブル設計が間違ってますね。下記のような設計にすべき
37
+
38
+ **売上一覧**
39
+
40
+ | 売上先 | 伝票No |
41
+ |-------|------|
42
+ | A株式会社 | 10010 |
43
+
44
+ **売上明細**
45
+
46
+ | 伝票No | 明細No | 商品 | 仕入先 |
47
+ |-------|--------|------|----|
48
+ | 10010 | 1 | りんご | B株式会社 |
49
+ | 10010 | 2 | みかん | C株式会社 |
50
+
51
+ 厳密にいえば、上記から、さらに 商品マスター、売上先マスター、仕入先マスター のテーブルを作成すべきです。
39
- この掲示板はマークダウン書式で上記のように表形式で表示できますので、マークダウン書式使って現状のテーブルデータ例とご希望の出力レイアウトを質問に追記しもらえすか
52
+ このような設計テーブルの正規化」といい、リレーショナルデータベースでは正規化されいないテーブルは使い物になりせん

1

説明追記

2020/04/04 11:04

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -10,4 +10,30 @@
10
10
  ON a.伝票No = Left(b.伝票No,5);
11
11
  ```
12
12
 
13
- 可能なら、仕入一覧の伝票No は、伝票No(5桁)と 伝票No子番(1桁) に分割すべきです。
13
+ 可能なら、仕入一覧の伝票No は、伝票No(5桁)と 伝票No子番(1桁) に分割すべきです。
14
+
15
+ ---
16
+ コメントより
17
+ > 上記のように仕入先の伝票No.は売上先の伝票No.と同じですが
18
+ 仕入先が複数ある場合のみ伝票No.2として下一桁を追加している状態です。
19
+ ですので仕入先がひとつの場合は伝票No.2は空欄です。
20
+
21
+ > 伝票No.のみでリレーションシップを築くと仕入先が複数ある場合の仕入先の表示がおかしくなってしまいます。
22
+
23
+ ひょっとして現状のテーブルは下記のようになっているといことでしょうか。
24
+
25
+ **売上一覧**
26
+
27
+ | 売上先 | 商品 | 伝票No |
28
+ |-------|------|------|
29
+ | A株式会社 | りんご、みかん | 10010 |
30
+
31
+ **仕入一覧**
32
+
33
+ | 仕入先 | 伝票No | 伝票No2 |
34
+ |-------|--------|--------|
35
+ | B株式会社 | 10010 | 100101 |
36
+ | C株式会社 | 10010 | 100102 |
37
+
38
+ こうだとして、これからどのような表示をご希望なのでしょうか。
39
+ この掲示板はマークダウン書式で上記のように表形式で表示できますので、マークダウン書式を使って現状のテーブルデータ例とご希望の出力レイアウトを質問に追記してもらえますか。