0

私は2つのテーブルを持っています。projects テーブルのフィールド名は、fieldname テーブルに格納されます。

プロジェクト表

RecordID、ProjectID、Field1、Field2、Field3、Field4、...、Field20

フィールド名テーブル

FieldNameID、ProjectID、FieldNumber、FieldName

フィールド名が実際に FieldNames.FieldName である Projects テーブルから結果を返すことは可能ですか? 'Field'+FieldNames.FieldNumber を連結して Fieldname を返し、それを Projects の Field(x) のエイリアスとして使用できますか?

つまり、「Field1」の代わりに、Projects.ProjectID=FieldNames.ProjectNames および FieldNumber=1 の FieldNames.FieldName になります。

4

1 に答える 1

1

これは、動的 SQL、または値をフィールドにマップする巨大な case ステートメントを使用するか、各組み合わせを含むビューを作成し、where 句で適切なコードを使用して適切な行を取得することで実行できます。

しかし、私の意見では、あなたは完全に間違った道を進んでおり、緊急の警告なしにさらに進むのを助けることは完全に無責任です. だからここに行きます:

あなたが使用しているデータベース設計は本当にひどい設計のアンチパターンであり、特に臭い方法でベスト プラクティスに違反しています (「コードの臭い」のように、「データベースの臭い」があります)。列名を列に格納しないでください。違います。痛いでしょう。それはあなたのデータベースを悪にします。プロはこっそりと大声で笑うでしょう。私は致命的に深刻です。

于 2012-07-20T07:41:33.827 に答える