0

値に基づいたデータの解析に関する同様の投稿をたくさん見ましたが、別のテーブルの列名を含むあるテーブルから結果列を取得したいものは何もありません。例えば:

 Select [col1], [col2]
 from Table1
 where (select changes as (col#)
        from table2)

col# は、Table1 から取得したい列名のリストです。Table2 の変更列はカンマ区切りのリストです。table2 のリストにある Table1 の各列を取得できる方法を考えたかったのです。どんな助けでも大歓迎です。

4

1 に答える 1

0

オンザフライでクエリを作成する必要があります。次のいずれかの方法でこれを行うことができます。

  1. 最初にchanges列から呼び出し元のアプリケーションにデータをフェッチし、次にそのデータから SQL クエリ文字列を組み立てて実行します。または、
  2. ストアド プロシージャ内で動的ステートメントを作成し、EXECそれを実行します (または、RDBMS の同等のステートメントは何でも)。

changesただし、データがユーザー入力から得られたものである場合、あなたは悲惨な世界に直面していることに注意してください.

スキーマを制御できる場合は、この方法でデータを保存することを避けることをお勧めします。一般に、コンマ区切りリストは扱いにくく、データベースの設計意図に根本的に反します。変更される可能性のある列ごとに 1 つのブール値を(id, col1_changed, col2_changed)持つ、または変更された列ごとに 1 つの行を持つ変更テーブル構造(id, changed_col_name)は、通常のクエリで使用する方がはるかに簡単です。

于 2012-11-06T18:20:37.673 に答える