私はdrupal6/PHP5用のモジュールをMySQL(およびオプションでPostgreSQL)を使用して作成しています。複数の行を可変長の単一の行に変換するためのSQL
これらのフィールドを参照する値(lid、pid、fid、numval、stringval)のフィールドのテーブル(fid、name、type、class ...)とパラメータテーブルを持っています。 )。 パラメータは数値(FLOAT/REAL)または文字列値(TEXT)のみですが、 (フィールド "タイプ"による)ではありません。
与えられた「ふた」には、ループ内の行として簡単に取り出すことができる複数の/可変数のパラメータ/行があります。私がしたいのは、単一の 行の "値"を取得することです。各行の見出しには、関連するフィールド名が入ります。 このようなクエリでは、すべてのフィールド:値のペアがオブジェクト属性として返されます:値 が1つのデータベース呼び出しでペアになります。
Googleは、複数の行を1行にまとめたSQLの例をいくつか見つけましたが、 結果セット内の固定数の列/フィールドのあらかじめ決められたラベル付けを前提としているようです単一の複合「名前:値」ストリングとしての列項目。 私は、 フィールドの任意の数値に対してより一般的なアプローチがあると思っています。これはMySQLとPostgreSQLの両方で機能しますか?
私は非常に基本的なSQLエクスペリエンスしか持っていないので、ビューやテンポラリテーブルや、プロシージャの定義と実行に関することはできません。
ありがとうございました。単一の行を返すいくつかの選択LID = 1つの発現と
例として
FIELDS
FID NAME TYPE CLASS WIDGET SIZE UNITS DESCRIPTION .....
1 voltage float instrument text 10
2 current float instrument text 10
3 size float sample text 10
4 colour text sample text 30
...
PARAMS
PID LID FID NUMVAL STRINGVAL
1 1 1 2.5 NULL
2 1 4 NULL 'blue'
3 2 1 2.7 NULL
4 2 2 13 NULL
5 2 3 27 NULL
6 2 4 NULL 'greenish blue'
:
| voltage | colour |
-----------------------
| 2.5 | 'blue' |
セレクトLID = 2
| voltage | current | size | colour |
------------------------------------------------
| 2.7 | 13 | 27 | 'greenish blue' |
サンプルデータと結果の表示方法を教えてください。 –
完了。乾杯。実際には、私はFIELDSには約30行、PARAMSには100万以上のものしかないと思います。さまざまな条件/機器/使用状況によって、異なるフィールドが記録/要求されます。 – doobs
おめでとう、あなたはEAVの亜種を再発見しました。ほとんどのリレーショナルデータベースではうまく機能しません。すべてのデータを1つのテーブルにまとめる理由はありますか? –