【发布时间】:2013-11-15 19:39:16
【问题描述】:
我的 SQLFiddle:http://sqlfiddle.com/#!2/729a9/1
如您所见,尽管表中有两行,但返回了一行。
也是最高的id,可能跟这个有关系吧?
对不起,我被难住了。
SQL:
SELECT GROUP_CONCAT(distinct
CONCAT(
'max(case when `pat`.`name` = ''',
`pat`.name,
''' then `pa`.`value` end) as `',
`pat`.name, '`'
)
) INTO @list
FROM `product_attribute_types` pat;
SET @sql = CONCAT('select ', @list, '
from `products` `p`
LEFT JOIN `product_attributes` `pa`
ON `p`.id=`pa`.`product_id`
LEFT JOIN `product_attribute_types` `pat`
ON `pa`.`type`=`pat`.`id`
');
PREPARE stmt FROM @sql;
EXECUTE stmt;
【问题讨论】:
-
我必须说,您删除之前的问题是不公平的,该问题的回答只是为了重新发布该问题的新版本并进行了更改。如果您的要求发生变化,那么您应该向答案的作者发表评论或发布新问题。删除和重新发布非常粗鲁 - 仅限 10k 用户 -- stackoverflow.com/questions/19775409/…
-
您的小提琴中的
products表是否正确?您拥有相同产品 ID 的蓝色裤子和绿色衬衫。 -
您应该将
product_id, type设为product_attributes中的唯一键,以防止出现此问题。
标签: mysql pivot dynamic-sql