sql >> データベース >  >> RDS >> Mysql

MySQL結果セットを行から列に変換する

    うーん...EAV。 EAV(entity-attribute_value)を回避する多くの理由の1つは、EAVのレポートとクエリが難しいことです。ただし、必要な属性が事前にわかっている場合は、次のようにすることができます。

    Select id
        , Min( Case When name = 'Make' Then attribute_value End ) As Make
        , Min( Case When name = 'Year' Then attribute_value End ) As Year
        , Min( Case When name = 'Type' Then attribute_value End ) As Type
        , Min( Case When name = 'Axles' Then attribute_value End ) As Axles
        , Min( Case When name = 'Size' Then attribute_value End ) As Size
        , Min( Case When name = 'Frame' Then attribute_value End ) As Frame
        , ...
    From attributes
    Where name In('Make','Year','Type','Axles','Size','Frame',....)
    Group By id
    

    現在、MySQLにはGROUP_CONCATがあり、許可した場合(たとえば、エンティティが複数のMake属性を持つことができる場合)、同じ属性の複数の値をリストに連結できます。



    1. SQLServerのデータベースメールプロファイルに関連付けられているアカウントを一覧表示する

    2. Windows認証ユーザーとしてOLEDBプロバイダーエラーのインスタンスを作成できません

    3. MySQLテーブルに多くのランダムな数値を入力するにはどうすればよいですか?

    4. OracleRACHAソリューションとGaleraClusterforMySQLまたはMariaDBの比較