任意にネストされた副選択を持つSQLSELECT
式が与えられた場合、副選択を含まず、同じ結果セットを返すように、その SQL 式を常に書き直すことができますか?
もしそうなら、そうするためのアルゴリズムはありますか?
SELECT
そうでない場合、書き直すことができない式の特徴はありますか?
SELECT
SQLステートメントを生成するアプリケーションを作成しています。この時点でどのように動作するかをまだ設計中です。ただし、一般的な考え方は次のとおりです。
ユーザーは、どの列を表示するか、結果をどのように並べ替えるか、どのように制限するかを選択します。
列は単なる SQL 列ではなく、複数のテーブルからの列変数を含む SQL 式をオブジェクトに含めることができる名前付きオブジェクトになります。これらのオブジェクトには、互いに結合する方法に関する情報が含まれます。
これらの式の構成をできるだけ柔軟にしたいと考えています。何らかの結果セットを返す SELECT ステートメントを記述できるのであれば、アプリケーションがを返すステートメントS
を生成できるようにしたいと考えています。SQL で可能なことの 1 つは、副選択です。サブセレクトを JOINS で書き直すと、パフォーマンスが向上することを読みました。したがって、構成でサブセレクトを禁止することを検討しています。ただし、すべてのサブ選択を結合として書き換えることができない限り、これを行いたくありません。SELECT
S