0

機能と値をすべて 1 行にグループ化しようとしています。誰かが GROUP_CONCAT を勧めましたが、そうすると他のすべての製品が失われます。ここに私が現在持っているSQL呼び出しがあります

SELECT ps_product_lang.name, CONCAT(ps_feature_lang.name) AS feature, ps_feature_value_lang.value  FROM ps_product LEFT JOIN ps_product_lang ON ps_product_lang.id_product = ps_product.id_product LEFT JOIN ps_feature_product ON ps_feature_product.id_product = ps_product.id_product LEFT JOIN ps_feature_lang ON ps_feature_lang.id_feature = ps_feature_product.id_feature LEFT JOIN ps_feature_value_lang ON ps_feature_value_lang.id_feature_value = ps_feature_product.id_feature_value

これは私にこのようなリターンを与えます

name                 feature    value
MRO Plus Heavy Pad       Height 5
MRO Plus Heavy Pad       Width  12
MRO Plus Heavy Pad       Depth  13
MRO Plus Heavy Pad       Weight 15
ENV810™ Sorbent Boom     Height 88
ENV810™ Sorbent Booms    Width  50
ENV810™ Sorbent Booms    Depth  23
ENV810™ Sorbent Booms    Weight 45
ENV510™ Sorbent Booms    NULL   NULL
MRO Plus Medium Pad      NULL   NULL

GROUP_CONCAT を試すと、結果は次のようになります。

Name                Feature                                                 Value
MRO Plus Heavy Pad  Height,Width,Depth,Weight,Height,Width,Depth,Weigh...   5,12,13,15,88,50,23,45

MySQLにこのように見せる方法はありますか

Name                    Feature                           Value
MRO Plus Heavy Pad      Height, Width, Depth, Weight      5, 12, 13, 15
ENV810 Sorbent Boom     Height, Width, Depth, Weight      88, 50, 23, 45
ENV510 Sorbent Boom     Null                              Null
MRO Plus Medium pad     Null                              Null

どんな助けでも大歓迎です!

4

1 に答える 1

2

GROUP_CONCAT はMySQL 固有の集計関数であり、GROUP BY 句で機能します。クエリを機能させるには、クエリの最後に GROUP_BY 句を使用して列を指定する必要があります。

サンプル:

SELECT ps_product_lang.name, GROUP_CONCAT(ps_feature_lang.name) AS feature, ps_feature_value_lang.value FROM ps_product LEFT JOIN ps_product_lang ON ps_product_lang.id_product = ps_product.id_product LEFT JOIN ps_feature_product ON ps_feature_product.id_product = ps_product.id_product LEFT JOIN ps_feature_lang ON ps_feature_lang.id_feature = ps_feature_product.id_feature LEFT JOIN ps_feature_value_lang ON ps_feature_value_lang.id_feature_value = ps_feature_product.id_feature_value GROUP BY ps_product_lang.name
于 2013-06-27T20:02:26.207 に答える