DBに、受注曜日を保持しなければなりませんが
みなさんはどのようなカラム構成にしますか?
1)受注曜日1(日曜日を表す)~受注曜日7(土曜日を表す)の7項目を設け、
それぞれにON/OFFをセットする
例:月・水・金が受注日の場合、受注曜日2、4、6は1、その他はZERO

2)受注曜日1(1つ目の受注曜日を表す)~受注曜日7の7項目を設け、
受注曜日1から順に、曜日を表す区分をセットする
例:月・水・金が受注日の場合、受注曜日1=1、受注曜日2=3、受注曜日3=5、
受注曜日4~7はNull

3)受注曜日を7桁で設け、日曜日から順に受注曜日にはBitを立てる
例:月・水・金が受注日の場合、受注曜日=0101010

4)受注曜日を7桁で設け、受注曜日を表す区分をセットする
例:月・水・金が受注日の場合、受注曜日=135

以前、別のシステムでは2)を使用したのですが、ちょっと不評だったような・・・
ご経験のある方、アドバイスお願いします。

ちなみにDBはOracle8.1.7、この受注曜日を追加しようとしているTableは
既にかなりの項目数があります。
くだらない質問ですみませんがよろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

補足ありがとうございます。


なるほど、わかりました。

受注曜日にある程度パターンがあるようなら、これを別テーブルにしたらどうでしょう?
で、受注パターンテーブルにはパターンID+曜日(7つ)のカラムを作成する。
曜日のカラムは、CHAR(1)で0 or 1とかにしておく。
商品マスターにはこのパターンIDを外部キーとして追加。

こんな感じでどうでしょう?

例えば月曜日に発注するものは発注パターンテーブルから月曜日がONになってるIDを検索、この発注パターンIDをキーに商品マスターを検索すれば一覧が作れます。
副照会使って書けば↓こんな感じですね。

SELECT 商品 FROM 商品MASTER
WHERE 商品マスター.発注パターンID IN (
 SELECT 発注パターンID FROM 発注パターンテーブル
 WHERE 月曜日 = '1'
)

実際の業務での使われ方に則していない可能性もありますが、発注パターンがある程度絞れるなら、これでも充分なパフォーマンスが出ると思います。
    • good
    • 0

何故、受注曜日を横持ちにするんでしょう?


一般的な受注処理なら受注毎に受注番号を振っていくと思うんですが。
で、受注番号をキーに1受注あたり受注日と曜日を1つずつ持てばいいはず。
それとも週単位で受注入力をしているから、といった理由でしょうか?
あるいは受注ではなく配送曜日?

いずれにしても、業務の流れと受注曜日を入力する理由が不明なので、明確な回答は難しいです。

この回答への補足

すみません、補足します。
これは商品Masterで、ある商品の発注サイクル/受注サイクルを持つために
「受注曜日」「発注曜日」を設けることになっています。
この曜日を、自動発注処理・所要量計算に使用することも考えられます。

「受注曜日」はこのMasterの所有者がSellerである際に、Buyerから発注を受け付ける曜日を示します。
説明が下手で申し訳ありません。

補足日時:2001/12/07 08:47
    • good
    • 0

どういった内容のテーブルで受注曜日を利用するのかわかりませんが、


4つの選択肢から選ぶとなると
(1)は、カラムが7つ必要なので既にかなりの項目数があるのでしたら
おすすめできません。
(2)は、受注曜日カラムにデータが入っているかまず判定しないといけ
ないのでちょっとつかいづらい気がします。
(3)(4)は、曜日を条件にして検索はしやすいと思います。
ということから(3)または(4)がいいような気がします。

また、他の方法でも可と言うのでしたら
「稼働日」という項目を追加して 1 = 月~金、2 = 月、水、金、3 = 火、木、土
の数値を登録しておき、1、2、3それぞれの意味を「稼働日マスタ」テーブルとして
作成しておけば数値の意味も分かり、結合して稼働日内容表示もできるかと思います。
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q【Access抽出方法】 表A-表B=表C は?

Accessを使って2つの表からデータを抽出する方法を
教えてください。

やりたいことは引き算です。
 表A - 表B = 表C

表Aには全取引会社がリストとして入っています。
表Bには得意先の会社だけが入っています。
表Aの中に入っている会社から表Bの得意先以外の
会社だけを表Cとして出したいのですが、
どうするのでしょうか?

実は今、これを手作業で1つ1つ検索削除をやってます。
どなたかお助けください!

Aベストアンサー

テーブルが取引先と得意先
キーが会社CDとすると

SELECT 取引先.*
FROM 取引先 LEFT JOIN 得意先 ON 取引先.CD = 得意先.CD
WHERE (得意先.CD) Is Null;

取引先全レコードと得意先レコードをキーで結びつけて
そのうち得意先レコードがない(null)のレコードを選択する。

Q二つの表の項目を比較して値を取得するSQL

お世話になります、
二つの表の項目を比較して値を取得するSQLを作成しているのですが、うまくいきません。

具体的には
Aテーブル

NAME | PRICE
------|------
リンゴ | 100
------|------
オレンジ | 200
------|------
ブドウ | 300
------|------


Bテーブル

NAME | PRICE
------|------
リンゴ | 1000
------|------
オレンジ | 200
------|------
ブドウ | 1300
------|------


という二つのテーブルA、Bがあったとします。
このA,Bの二つのテーブルのそれぞれの果物のPRAICEを比較してBのPRICEがアップしている果物を出力するという
SQLを教えてください。

<ほしい結果>
NAME | PRICE
------|------
リンゴ | 1000
------|------
ブドウ | 1300


よろしくお願いします。

お世話になります、
二つの表の項目を比較して値を取得するSQLを作成しているのですが、うまくいきません。

具体的には
Aテーブル

NAME | PRICE
------|------
リンゴ | 100
------|------
オレンジ | 200
------|------
ブドウ | 300
------|------


Bテーブル

NAME | PRICE
------|------
リンゴ | 1000
------|------
オレンジ | 200
------|------
ブドウ | 1300
------|------


という二つのテーブルA、Bがあったとします。...続きを読む

Aベストアンサー

No.1の ymmasayan です。
hana432 さんの指摘は重要です。

> AテーブルのNAMEとBテーブルのNAMEは、1:1と考えてよいですか?

この条件が満たされない場合は副照会を使う必要が出てくるでしょう。
ただ、そのあとに多少疑問があります。

> もし、「Aテーブルには無くてBテーブルにはある」もしくはその逆のパターンのデータが存在するのであれば上記の条件では不備があるので注意してください。

このような不備はありません。一方がなくても比較をしないだけ(本当は比較にすら行かない)なので、心配する必要はありません。

QSQLで曜日のソートを月火水木金土日にしたい

こんにちは。SQLiteのソートについてお教え頂けませんでしょうか。

フィールドに曜日が入っています。その曜日をソートをかけると下記のようになります。

土 日 月 木 水 火 金

欲しい並び順は下記です。

日 月 火 水 木 金 土
Or
月 火 水 木 金 土 日

CSVに出力したり、色々したいので曜日順になっていてもらった方が色々助かるのですが、何か良い方法はないでしょうか?

今考えているのは、C#のフォームからSQL文を発行してSQLiteに問い合わせ。結果をC#側で受け取って、CSVに出力という事を考えています。

Aベストアンサー

"CREATE TABLE hoge (yobi char(5))"

"INSERT INTO hoge VALUES ('土'),('日'),('月'),('木'),('水'),('火'),('金')"

"select yobi from hoge order by case yobi when '日' then 1 when '月' then 2 when '火' then 3 when '水' then 4 when '木' then 5 when '金' then 6 when '土' then 7 end"

こんなところでしょうか

QFileMaker Ver.7で2つの日付間から特定の曜日を除いた日数を求めたいのですが…

FileMaker Ver.7を使用して、質問のタイトルのように2つのフィールドは開始日と終了日を使用して特定の曜日を除いた日数を求めたいのですが皆様教えていただけませんか?

Aベストアンサー

>特定の曜日を除いた日数を求めたい
 特定の曜日は複数(土・日など)の場合もあるかも知れませんが、ここでは例えば日曜だけというように単数の場合に限定してお答えします。
 複数の場合があるときは、下記にならい、フィールドを複数設けて計算してください。
 次のとおり入力フィールド及び計算フィールドを作ります。
1、開始日(タイプ「日付」)……入力フィールドです。
2、終了日(タイプ「日付」)……入力フィールドです。
3、期間日数(タイプ「計算」計算結果「数字」)
  計算式………終了日-開始日+1
4、開始日の曜(タイプ「計算」計算結果「数字」)
  計算式………DayofWeek(開始日)
5、曜日(タイプ「テキスト」)……除きたい「特定の曜日」を入力するフィールドです。
 なお、入力に当たっては値一覧で定義し、ポップアップメニューで入力する方が便利でしょう。
7、曜日順(タイプ「計算」計算結果「数字」)」
  計算式……Case(曜日 ="日曜日",1,曜日="月曜日",2,曜日="火曜日",3,曜日="水曜日",4,曜日="木曜日",5,曜日="金曜日",6,曜日="土曜日",7)
7、期間中の曜日数(タイプ「計算」計算結果「数字」)
  計算式………If((0>曜日順 - 開始日の曜)or(曜日順-開始日の曜>=Mod(期間日数,7)),Int(期間日数/7),Int(期間日数/7)+1)
8、特定の曜日を除いた日数(タイプ「計算」計算結果「数字」)
  計算式………期間日数 - 期間中の曜日数
 以上で答えが出ると思います。(自信ありとしたのは、テストの結果一応正解が出たという意味です。)
 なお、「一応」という意味は、ご存知かも知れませんが、ファイルメーカーの場合はエクセルと違って「DATEDIF」のような関数がないため、期間計算や年齢計算の場合、極めて複雑な計算をしないと閏年の関係で2年おきに1日の誤差が生じることがあります。したがって前記の場合も計算期間が長期間(例えば1年以上)になると誤差が生じる可能性がないとはいえません。しかしそこまで考慮して計算式に引用すると式が極めて複雑になるため、今回は省いておりすのであらかじめご了承ください。
(お暇があれば下記URLをご参照ください。)
http://okwave.jp/kotaeru.php3?q=1739838

>特定の曜日を除いた日数を求めたい
 特定の曜日は複数(土・日など)の場合もあるかも知れませんが、ここでは例えば日曜だけというように単数の場合に限定してお答えします。
 複数の場合があるときは、下記にならい、フィールドを複数設けて計算してください。
 次のとおり入力フィールド及び計算フィールドを作ります。
1、開始日(タイプ「日付」)……入力フィールドです。
2、終了日(タイプ「日付」)……入力フィールドです。
3、期間日数(タイプ「計算」計算結果「数字」)
  計算式………終了...続きを読む

Qクエリ-でAデ-タとBデ-タの 1コ-ド 2大項目 3中項目 の同じ項

クエリ-でAデ-タとBデ-タの 1コ-ド 2大項目 3中項目 の同じ項目を横に並べて数量を比較したいのですがどの様な関数又はSQLを組んだら良いでしょうかご指導願います アクセス2003




Aデータ Bデータ
コ-ド 大項目   中項目   数量 コ-ド 大項目  中項目   数量
123   22   11   100123   22   12   10
123 22 11 50123 22 12 25
123 18 12 40123 18 11 26
123 26 12 30123 26 11 28
234 20 91 100234 20 91 30
234 20 18 200234 20 18 65
234 24 18 300234 24 18 52
234 24 24 400234 24 24 40
256 25 12 58
256 25 12 26
256 26 24 23


完成後クエリ後


AデータBデータAデータBデータAデータBデータAデータBデータ
コ-ドコ-ド大項目大項目中項目中項目数量数量
1231232222111110010
123123222211115025
123123181812124026
123123262612123028
23423420209191100
23423420201818200
23423424241818300
23423424242424400

1.AデータとBデータが有ります Aデータのコ-ドとBデータのコ-ドをリレーショプを張って
Aデータのコード、Bデータのコードと上の様クエリを組みたいのですが指導願います
元データをAデータにしてBデータの同じものをくっつけて数量を比較したいのです

クエリ-でAデ-タとBデ-タの 1コ-ド 2大項目 3中項目 の同じ項目を横に並べて数量を比較したいのですがどの様な関数又はSQLを組んだら良いでしょうかご指導願います アクセス2003




Aデータ Bデータ
コ-ド 大項目   中項目   数量 コ-ド 大項目  中項目   数量
123   22   11   100123   22   12   10
123 22 11 50123 22 12 25
123 18 12 ...続きを読む

Aベストアンサー

2段階でやれることが分かりました。第1段階でコード、大項目、中項目をつないだフィールドを各テーブルごとにクエリーのビルドで作ります。新テーブルと呼ぶことにします。
第2段階であなたのやろうとされたリレーションで二つの新テーブルを新フィールドで関係付けておき、新しいクエリーで二つの新テーブルを読み込むと、あなたの希望するデータだけが出てきます。


人気Q&Aランキング

おすすめ情報