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

このeavクエリを作成して水平方向の結果を作成する方法

    これを実装する方法はいくつかあります。このようなものは、属性値ごとに複数回テーブルに結合して機能するはずです:

    SELECT p.product_id,
        a.value height,
        a2.value width
    FROM Product p
        JOIN Product_Attribute pa ON p.product_id = pa.product_id 
        JOIN Attribute a ON pa.attribute_id = a.attribute_id AND a.name = 'height'
        JOIN Product_Attribute pa2 ON p.product_id = pa2.product_id 
        JOIN Attribute a2 ON pa2.attribute_id = a2.attribute_id AND a2.name = 'width'
    

    そして、これがフィドル です。 。

    個人的に好むMAXとGROUPBYを使用した別のアプローチは次のとおりです。

    SELECT p.product_id,
        MAX(Case WHEN a.name = 'height' THEN a.value END) height,
        MAX(Case WHEN a.name = 'width' THEN a.value END) width
    FROM Product p
        JOIN Product_Attribute pa ON p.product_id = pa.product_id 
        JOIN Attribute a ON pa.attribute_id = a.attribute_id 
    GROUP BY p.product_id
    

    頑張ってください。



    1. Mavenの依存関係としてPostgreSQLドライバーをどのように追加しますか?

    2. 列リストに一致するFULLTEXTインデックスが見つかりません(インデックスが設定されています)

    3. MySQLまたは条件

    4. MYSQLの別の列でMAX(列値)、PARTITIONの行を選択するにはどうすればよいですか?