として別の列Iは、ユーザ情報のレガシー・テーブルを有する(すなわち、アクティブに使用中である)とIがの構造を変更できないように動的な行値を選択しますの/ etc国の名前の唯一の例であり、彼らは可変とすることができます/その列の列にユニーク以外の有限のリストがありませんMySQLは、カラム名、値
私は戻ってくるのMySQL互換性のSQLクエリ必要 -
id timezone language country something
---------------------------------------------------
0 Europe/London en 45 x
1 Europe/Paris fr 46
私は、MySQLへのPivotテーブル機能のハッキングに関するstackoverflowに関するさまざまな答えを見てきましたが、同じテーブルの列からの一意の行値からの可変列名エイリアスを使用するこのケースと一致するものはありません。私はほとんど眠れませんでしたので、彼らはすべてぼんやりとしたものになり始めています。事前にお詫び申し上げます。私は見つけることができる
最も近い同じテーブルクエリに最初のname列からすべての可能な/一意の値を取得し、CASE WHEN
を使用するクエリを建設するプリペアドステートメントhttps://stackoverflow.com/a/986088/830171、および/または複数のサブSELECT
またはJOIN
を使用することです。
私は、そのユーザーIDのすべての行を取得し、forループでアプリケーション自体で処理するか、名前を有限量に制限してサブを使用しようとします。SELECT
s/JOIN
s。しかし、新しい名前が追加された場合、このクエリを再訪しなければならない場合、2番目のオプションは理想的ではありません。
私はいくつかの他のRDBMS MySQLは、設計によってこの種の操作を旋回させるためのネイティブサポートを持っていないとは違って(開発者ではなく、それがプレゼンテーションに適しだと感じ
これは本当に 'sql'で表現する必要がありますか、あるいは選択したプログラミング言語で後処理で十分ですか? de-fungledデータに参加する必要がある場合、ビュー/ procがトリックかもしれません。 – bluevector
Yeh私は今、アプリケーションレベルで混乱を避けていきます - 私は、そのユーザーIDのすべての行を取得し、連想配列にデータを入れてループします。私はそれが唯一の良いオプションであることを確認したかった。移行と一度限りのレポートのためのSQLメソッドを持つことは非常に便利です。 – gingerCodeNinja