SQL Where句について教えて下さい。
- このフォーラムに新しいトピックを立てることはできません
- このフォーラムではゲスト投稿が禁止されています
prettyfly
投稿数: 4
![新米 新米](../../uploads/rank3e632f95e81ca.gif)
OS:WinXpPro
V9Plus
SQLServer2005
ある帳票を出すためにSQL Where句のDB SQLに記述をして抽出したデータを
ワークに書き出したいと思っています。
画面指定
・納期(範囲)
・納品先(範囲)
テーブルA
・伝票番号
・納期
・得意先コード
テーブルB
・得意先コード
・納品先コード
・区分
テーブルC
・得意先コード
・納品先コード
・区分
納期はテーブルAから範囲指定出来ますが、
納品先コードをテーブルAでは持っていません。
そこでテーブルB、Cと得意先コードでリンクさせ、
Bの[区分]が0 かつ Bの納品先コードが画面の納品先範囲内ならばワークに書き出す。
Bの[区分]が1 かつ Cの納品先コードが画面の納品先範囲内ならばワークに書き出す。
という処理をしたいのです。
これをSQL Where句にどのように記述したら良いのでしょうか?
SQL Where句を使用するのは初めてなので戸惑っています。
初歩的な質問ですがよろしくお願い致します。
V9Plus
SQLServer2005
ある帳票を出すためにSQL Where句のDB SQLに記述をして抽出したデータを
ワークに書き出したいと思っています。
画面指定
・納期(範囲)
・納品先(範囲)
テーブルA
・伝票番号
・納期
・得意先コード
テーブルB
・得意先コード
・納品先コード
・区分
テーブルC
・得意先コード
・納品先コード
・区分
納期はテーブルAから範囲指定出来ますが、
納品先コードをテーブルAでは持っていません。
そこでテーブルB、Cと得意先コードでリンクさせ、
Bの[区分]が0 かつ Bの納品先コードが画面の納品先範囲内ならばワークに書き出す。
Bの[区分]が1 かつ Cの納品先コードが画面の納品先範囲内ならばワークに書き出す。
という処理をしたいのです。
これをSQL Where句にどのように記述したら良いのでしょうか?
SQL Where句を使用するのは初めてなので戸惑っています。
初歩的な質問ですがよろしくお願い致します。
投票数:0
平均点:0.00
atushi
居住地: 長野県
投稿数: 30
![半人前 半人前](../../uploads/rank3dbf8e94a6f72.gif)
prettyfly様、こんにちは
以下のように定義して考えてみました。
・納期(範囲)は、納期(開始)〜納期(終了)。
項目番号は、仮に[BA]〜[BB]とする。
・納品先(範囲)は、納品先(開始)〜納品先(終了)。
項目番号は、仮に[BC]〜[BD]とする。
・テーブルAは、メインテーブル。納期は、範囲指定済。
・テーブルBは、結合リンク。得意先コード位置付指定済。
・テーブルBの区分は、[0][1]以外は対象外。
・テーブルCは、結合リンク。得意先コード位置付指定済。
・テーブルCの区分は、抽出に関係ないものとする。
<DB SQL例>
B.区分=0 AND B.納品先コード BETWEEN :BC AND :BD OR
B.区分=1 AND C.納品先コード BETWEEN :BC AND :BD
※B.区分、B.納品先コード、C.納品先コードに関しても
[:項目番号]指定しても良いと思います。
[DB SQL]内でダブルクリックすると、項目一覧が表示されます
ので、項目を選択すると[:項目番号]が表示されます。
以下のように定義して考えてみました。
・納期(範囲)は、納期(開始)〜納期(終了)。
項目番号は、仮に[BA]〜[BB]とする。
・納品先(範囲)は、納品先(開始)〜納品先(終了)。
項目番号は、仮に[BC]〜[BD]とする。
・テーブルAは、メインテーブル。納期は、範囲指定済。
・テーブルBは、結合リンク。得意先コード位置付指定済。
・テーブルBの区分は、[0][1]以外は対象外。
・テーブルCは、結合リンク。得意先コード位置付指定済。
・テーブルCの区分は、抽出に関係ないものとする。
<DB SQL例>
B.区分=0 AND B.納品先コード BETWEEN :BC AND :BD OR
B.区分=1 AND C.納品先コード BETWEEN :BC AND :BD
※B.区分、B.納品先コード、C.納品先コードに関しても
[:項目番号]指定しても良いと思います。
[DB SQL]内でダブルクリックすると、項目一覧が表示されます
ので、項目を選択すると[:項目番号]が表示されます。
投票数:0
平均点:0.00
prettyfly
投稿数: 4
![新米 新米](../../uploads/rank3e632f95e81ca.gif)
atushi様
ありがとうございます!
私の拙い文章でご理解頂けて嬉しいです。
ただ、テーブルBには必ずしも一致するレコードがあると
限らないことが分かりました。
テーブルBに一致するデータがあり、B.区分=1の時は
上手くいくのですが、データがない時はメインテーブルの
情報自体が抽出されませんでした。
なのでDB SQLに
B.区分=0 AND B.納品先コード BETWEEN :BC AND :BD OR
C.納品先コード BETWEEN :BC AND :BD
と記述してみました。
これならばテーブルBがない時やB.区分=1の時はCのコードを
参照するようになるかなぁ…と。
またテーブルBは外部、テーブルCは結合でリンクさせました。
多分上手くいったと思います…。
もし考え方が間違っていたら、またアドバイスをお願い致します。
> 以下のように定義して考えてみました。
>
> ・納期(範囲)は、納期(開始)〜納期(終了)。
> 項目番号は、仮に[BA]〜[BB]とする。
> ・納品先(範囲)は、納品先(開始)〜納品先(終了)。
> 項目番号は、仮に[BC]〜[BD]とする。
> ・テーブルAは、メインテーブル。納期は、範囲指定済。
> ・テーブルBは、結合リンク。得意先コード位置付指定済。
> ・テーブルBの区分は、[0][1]以外は対象外。
> ・テーブルCは、結合リンク。得意先コード位置付指定済。
> ・テーブルCの区分は、抽出に関係ないものとする。
>
> <DB SQL例>
> B.区分=0 AND B.納品先コード BETWEEN :BC AND :BD OR
> B.区分=1 AND C.納品先コード BETWEEN :BC AND :BD
ありがとうございます!
私の拙い文章でご理解頂けて嬉しいです。
ただ、テーブルBには必ずしも一致するレコードがあると
限らないことが分かりました。
テーブルBに一致するデータがあり、B.区分=1の時は
上手くいくのですが、データがない時はメインテーブルの
情報自体が抽出されませんでした。
なのでDB SQLに
B.区分=0 AND B.納品先コード BETWEEN :BC AND :BD OR
C.納品先コード BETWEEN :BC AND :BD
と記述してみました。
これならばテーブルBがない時やB.区分=1の時はCのコードを
参照するようになるかなぁ…と。
またテーブルBは外部、テーブルCは結合でリンクさせました。
多分上手くいったと思います…。
もし考え方が間違っていたら、またアドバイスをお願い致します。
> 以下のように定義して考えてみました。
>
> ・納期(範囲)は、納期(開始)〜納期(終了)。
> 項目番号は、仮に[BA]〜[BB]とする。
> ・納品先(範囲)は、納品先(開始)〜納品先(終了)。
> 項目番号は、仮に[BC]〜[BD]とする。
> ・テーブルAは、メインテーブル。納期は、範囲指定済。
> ・テーブルBは、結合リンク。得意先コード位置付指定済。
> ・テーブルBの区分は、[0][1]以外は対象外。
> ・テーブルCは、結合リンク。得意先コード位置付指定済。
> ・テーブルCの区分は、抽出に関係ないものとする。
>
> <DB SQL例>
> B.区分=0 AND B.納品先コード BETWEEN :BC AND :BD OR
> B.区分=1 AND C.納品先コード BETWEEN :BC AND :BD
投票数:0
平均点:0.00
atushi
居住地: 長野県
投稿数: 30
![半人前 半人前](../../uploads/rank3dbf8e94a6f72.gif)
prettyfly様、こんにちは
>またテーブルBは外部、テーブルCは結合でリンクさせました。
・テーブルAのレコードをリンクで抽出したいときは結合リンク、
抽出したくないときは外部リンクとなっていれば問題ありません。
・(追記しました)
テーブルAのレコードをリンクで抽出したくない場合でも、
リンクのレコードが必ず存在する場合は、結合リンクで
良いと思います。
・以下の条件を考えて、問題なければ良いと思います。
A(メインテーブル)から得意先コード位置付で、
Bレコードなし、Cレコードなしが、ある場合の条件
Bレコードなし、Cレコードありが、ある場合の条件
Bレコードあり、Cレコードなしが、ある場合の条件
Bレコードあり、Cレコードありが、ある場合の条件
>またテーブルBは外部、テーブルCは結合でリンクさせました。
・テーブルAのレコードをリンクで抽出したいときは結合リンク、
抽出したくないときは外部リンクとなっていれば問題ありません。
・(追記しました)
テーブルAのレコードをリンクで抽出したくない場合でも、
リンクのレコードが必ず存在する場合は、結合リンクで
良いと思います。
・以下の条件を考えて、問題なければ良いと思います。
A(メインテーブル)から得意先コード位置付で、
Bレコードなし、Cレコードなしが、ある場合の条件
Bレコードなし、Cレコードありが、ある場合の条件
Bレコードあり、Cレコードなしが、ある場合の条件
Bレコードあり、Cレコードありが、ある場合の条件
投票数:0
平均点:0.00