7

これが私が欲しいものです:

attribute_name  attribute_id    attribute_value
--------------------------------------------------------------------
Appliances      16, 17, 18, 19  Washer, Dryer, Dishwasher, Microwave
Consoles        7, 3            PS3, XBox

これが私が持っているものに近いです:

attribute_name  attribute_id   attribute_value
-------------------------------------------------
Appliances      16             Washer
Appliances      17             Dryer
Appliances      18             Dishwasher
Appliances      19             Microwave
Consoles        7              PS3
Consoles        3              XBox

...このクエリから:

  SELECT     a.name AS attribute_name,

             av.attribute_value_id, av.value AS attribute_value

  FROM       attribute_value av

  INNER JOIN attribute a

               ON av.attribute_id = a.attribute_id

  WHERE      av.attribute_value_id IN

               (SELECT attribute_value_id

                FROM   property_attribute

                WHERE  property_id = 1)

  ORDER BY   a.name;

GROUP_CONCATで成功していません。何が欲しいのかさえわからない。

4

2 に答える 2

8

既存のクエリは、連結された列を生成するために必要なすべてを返します。既存のクエリをサブクエリでラップする場合はGROUP_CONCAT()、列とGROUP BY attribute_name:の両方を使用できます。

SELECT 
  attribute_name,
  GROUP_CONCAT(attribute_value_id) AS attribute_value_ids,
  GROUP_CONCAT(attribute_value) AS attribute_values
FROM (
  /* Wrap the body of your existing query in a subselect */
  SELECT 
    a.name AS attribute_name,
    av.attribute_value_id,
    av.value AS attribute_value
  FROM  
    attribute_value av
    INNER JOIN attribute a
         ON av.attribute_id = a.attribute_id
  WHERE      
    av.attribute_value_id IN
               (SELECT attribute_value_id
                FROM   property_attribute
                WHERE  property_id = 1)
) attr_groups
GROUP BY attribute_name
ORDER BY attribute_name;
于 2012-06-28T02:52:10.367 に答える
3
SELECT group_concat(a.name, av.attribute_value_id, av.value)
于 2012-06-28T02:54:01.180 に答える