2011-10-26 6 views
1

無料のスタンフォードデータベースコースをオンラインで利用しています。 DBの経験はありませんが、何年ものOSプログラミング経験があります。通常は、アルゴリズムをコーディングする前に、特定のアルゴリズムのフローチャートまたは擬似コードを書き出します。私は、このテクニックをフローチャートや疑似コードからSQL文に変換することができるかどうか疑問に思っていました。擬似コードをSQL文に変換するにはどうすればよいですか?

セットを反復するループは、WHERE句と一致しますか?これは主に(?)または常に(?)真ですか?

どのように二重にネストされたループをSQLにマップしますか?

+1

基本的なSQLは手続き型ではありません。それはループの概念も同等のものもありません。したがって、二重にループがマップされるものについて話すことは、実際には意味がありません。 –

答えて

2

SQLはセットベースの論理(関係代数/微積分)を使用しますが、ほとんどのプログラミング言語は命令型/手続き型(例:C#、Javaなど)です。

セットベースの論理擬似コードを書く場合、命令型疑似コードはC#に変換するので、SQLに変換するのは簡単です。

セットベースのロジックの擬似コードの例は次のようなものかもしれません:

1.Join book stores and titles over the BookstoreID. 
2.Restrict the result of that join to tuples for the book Some Sample Book. 
3.Project the result of that restriction over StoreName and StorePhone. 

あなたが(または擬似コードのC#にセットベース)それはだSQLに不可欠擬似コードを変換しようとしている場合はるかに苦痛になるだろう。

+1

私はそれが苦痛以上であると主張します。私は意味がないと言いたい。 –

+0

私はあなたがC言語にそれを変換するLINQ演算子を使用することができたセットベースの擬似コードを持っているかどうかは確かです。しかし、私は、命令型の擬似コードをSQLに変換することは意味がないことに同意します。いずれかのセットベースのアルゴリズムを持っているか、そうでないと、SQLを使ってそれを実装するべきではありません。 –

0

SQLはセットベースのロジック用に設計されているとDylan氏は述べています。しかし、実際の状況では、これらのセットをループすることができます。

基本的に、ターゲット結果セットを一時テーブルに格納します。次に、必要なプロセスを実行して、テンポラリテーブルの各レコードをループします。

完了したら、テンポラリテーブルを削除してクリーンアップします。

典型的なプログラミング言語(パスカル、Cなど)と同じようなものではありません。

+0

enh ... SQL(OPの意図)を学ぶこともSQLの能力を活用することもできますが、できるだけこのようにループするのは避けてください。さもなければ、カーソルは馬場になって平凡なSQL –

関連する問題