ホーム   フォーラム   FAQ
 
メインメニュー
ログイン
ユーザー名:

パスワード:


パスワード紛失

SQL Where句について教えて下さい。

  • このフォーラムに新しいトピックを立てることはできません
  • このフォーラムではゲスト投稿が禁止されています
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2007-5-23 10:22 | 最終変更
atushi  半人前 居住地: 長野県  投稿数: 30
prettyfly様、こんにちは

>またテーブルBは外部、テーブルCは結合でリンクさせました。

・テーブルAのレコードをリンクで抽出したいときは結合リンク、
 抽出したくないときは外部リンクとなっていれば問題ありません。

・(追記しました)
 テーブルAのレコードをリンクで抽出したくない場合でも、
 リンクのレコードが必ず存在する場合は、結合リンクで
 良いと思います。

・以下の条件を考えて、問題なければ良いと思います。

 A(メインテーブル)から得意先コード位置付で、
 Bレコードなし、Cレコードなしが、ある場合の条件
 Bレコードなし、Cレコードありが、ある場合の条件
 Bレコードあり、Cレコードなしが、ある場合の条件
 Bレコードあり、Cレコードありが、ある場合の条件
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2007-5-22 19:09
prettyfly  新米   投稿数: 4
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
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2007-5-21 22:55 | 最終変更
atushi  半人前 居住地: 長野県  投稿数: 30
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]内でダブルクリックすると、項目一覧が表示されます
 ので、項目を選択すると[:項目番号]が表示されます。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2007-5-21 21:48
prettyfly  新米   投稿数: 4
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句を使用するのは初めてなので戸惑っています。
初歩的な質問ですがよろしくお願い致します。
投票数:0 平均点:0.00

  条件検索へ


Copyright (C) Magic Software Japan K.K. All Rights Reserved.
個人情報保護方針 会員規約