• ベストアンサー

WHERE句の書き方

ビューを作る際に、WHERE句に結合条件を指定するのですが、 この条件を書く方法が決まっているのでしょうか。 それとも同じ結果が返ってくるのであれば、何でもいいのでしょうか。 なにか有用なサイトもありましたら含めて教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.4

>ソフトウェア開発技術者試験のデータベース問題で使う知識 そういう話であれば、結合順や条件式の順序は、結果が異なるのでなければ、どのように書いても問題ありません。 >それとも同じ結果が返ってくるのであれば、何でもいいのでしょうか 凝った記述方式でなく、簡潔で分かりやすい記述方法を心掛けましょう。試験で問われるのは標準SQLでの回答なので、自分のSQLの知識が標準SQLの範囲なのか、特定のRDBMSの独自仕様なのかといったことを、普段から意識しておいた方が良いでしょう。 結合順や条件式の順序で、「良い性能が出せる」といった話は、RDBMSの実装方式の話なので、Oracle MasterやMCDBAなどのベンダー試験ならともかく、情報処理技術者試験では出る範囲ではありません。 なお、結合に関しては、inner joinやleft joinでは、結合条件をonのところで書き、制限条件(結合するため以外の条件)は、whereのところで書きます。RDBMSの実装上、onのところで制限条件もまとめて書くことができるものもありますが、情報処理技術者試験では不正解とされるかも知れません。

otaks
質問者

お礼

ご回答ありがとうございます。理解できました。

すると、全ての回答が全文表示されます。

その他の回答 (3)

  • E-HR33
  • ベストアンサー率25% (20/78)
回答No.3

SQLServerしか使ったことありませんが。。。 基本的にはデータベース設計で並んでる順に書いたほうがいいですよ。 あとインデックスがあってそれを使うのであればそれも念頭に置くべきです。 あとは一つ目にあげた点と矛盾するかもしれませんが絞込みやすいキー(値の分布が少ないキー)を先頭に持ってくるとか。

すると、全ての回答が全文表示されます。
回答No.2

まず使用されるRDB名を書いてください。(Oracle等) RDBによって記述方法が異なってきます。 テーブルの結合順序は通常DB側で最適な順序を割り出しますので どんな順序で書いても同様の結果が得られます。注意しなければいけないのは、 列A = LEFT(列B,1) 等の関数を含む条件の場合、関数は右辺に書いた方がパフォーマンスが良い事が多いでしょう。

すると、全ての回答が全文表示されます。
回答No.1

RDBMS名やバージョンを書きましょう。 各RDBMSには、「より性能を出すために考慮すべき事項」があり、そういった情報が公開されている場合があります。 >この条件を書く方法が決まっているのでしょうか 「書く方法」とは、どんなものを想定しての話でしょうか? 表の結合順序、条件式の指定順といった話ですか? >それとも同じ結果が返ってくるのであれば、何でもいいのでしょうか。 遊びでやっているなら、お好きにどうぞ。 質問が曖昧すぎるので、この質問内容では、誰も具体的なアドバイスはできません。

otaks
質問者

補足

私が知りたいのはソフトウェア開発技術者試験のデータベース問題で使う知識です。 明記しておりませんで、申し訳ありません。 >「書く方法」とは、どんなものを想定しての話でしょうか? >表の結合順序、条件式の指定順といった話ですか? そのとおりです。

すると、全ての回答が全文表示されます。

専門家に質問してみよう