这就是我想要的:
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没有成功。我甚至都不知道我想要什么。
答案 0 :(得分:7)
您现有的查询将返回生成连续列所需的所有内容。如果您将现有查询包装在子查询中,则可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;
答案 1 :(得分:2)
SELECT group_concat(a.name, av.attribute_value_id, av.value)