- ベストアンサー
範囲指定のSQL文で悩んでいます
抽出条件の範囲指定が行えるプログラムを作成しています。 抽出条件としては 大分類 ~ 大分類 |-(小分類~小分類) |-(小分類~小分類) と、大分類に紐付く小分類も範囲指定ができる一覧出力プログラムです。 テーブルの構造としては ・大分類 ・小分類 ID 名称 大分類ID ID 名称 と、シンプルな構造です。 このように大分類の範囲指定を行いつつ、小分類の範囲指定も行うと いったSQL文の作り方で悩んでいます。 小分類が大分類に紐付いてなければ、単純にBETWEENを2つ書いて終了 といった感じで良いと思うのですが・・・。 BETWEEN (大 AND(BETWEEN 小 AND 小)) AND 大分類(・・・ なんて事もできないと思いますし。 ほんと初歩的な事かもしれませんが、ご返答お待ちしています。 ちなみにですが、DBはSQLServer2005です。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
そもそも、不可じゃないですか。 大分類が自動車メーカーだとして、小分類が車種だとします。 その場合、<トヨタの普通車とRV><日産のRVとトラック>の両者の範囲なんて概念が成立しますかね? 多分、そのような考え方自体が成立不能だと思いますよ。 「トヨタの普通車とRVに加えて日産のRVとトラックを抽出せよ!」なら可能でしょうが・・・。 そういうことで、悩んで当然でしょう。 ならば、そもそもの発想の是非を・・・。
その他の回答 (1)
- venzou
- ベストアンサー率71% (311/435)
小分類の範囲が2つあるのですか? その場合は、条件が曖昧になると思います。 大分類がA~D、小分類がそれぞれに1~5だと仮定します。 選択肢は、20個あります。 A-1, A-2, A-3, A-4, A-5 B-1, B-2, B-3, B-4, B-5 C-1, C-2, C-3, C-4, C-5 D-1, D-2, D-3, D-4, D-5 例えば、抽出条件を A-(1~3) ~ D-(2~4) とした場合、 抽出したいのは、どのデータでしょうか?
お礼
お返事ありがとうございます。 No2の方がおっしゃっているようにそもそも不可能と気づきました。 例えば大分類をA~Cと範囲指定した際に、間のBの小分類の範囲指定が できないですよね。 ・・・すいません。 勉強し直してきます。 ご返答ありがとうございました!
お礼
お返事ありがとうございます。 そもそも不可能ということに気づきました(No1さんへのお返事で理由を 書かせていただいてます)。 これ、実は上のSEから「抽出条件に大分類と小分類の範囲指定できるよう にしておいてね」って言われて、自分なりに考えてみた事なんです。 大分類を範囲指定にすると、小分類の範囲指定なんてそもそも無理です よね。 というより、他の考え方があるのか・・・。