Vous devez effectuer un PIVOT
opération, qui n'est pas prise en charge nativement dans MySQL (contrairement à certains autres SGBDR).
Le plus proche que vous pouvez obtenir est de construire SQL selon les lignes suivantes :
SELECT ProductId,
GROUP_CONCAT(IF(Name='Brand Name' ,value,NULL))
AS `Brand Name`,
GROUP_CONCAT(IF(Name='Ethernet Technology' ,value,NULL))
AS `Ethernet Technology`,
GROUP_CONCAT(IF(Name='Form Factor' ,value,NULL))
AS `Form Factor`,
GROUP_CONCAT(IF(Name='Media Type Supported',value,NULL))
AS `Media Type Supported`
FROM search_export
GROUP BY ProductId
Si possible Name
les valeurs sont dynamiques, vous pouvez générer un tel SQL dans un langage de niveau supérieur à partir des résultats de :
SELECT DISTINCT Name FROM search_export
En effet, on pourrait même utiliser SQL lui-même :
SELECT CONCAT('
SELECT ProductId, ',
GROUP_CONCAT('
GROUP_CONCAT(IF(Name=',QUOTE(Name),',value,NULL))
AS `',REPLACE(Name,'`','``'),'`'
), '
FROM search_export
GROUP BY ProductId
')
INTO @sql
FROM (
SELECT DISTINCT Name FROM search_export
) t;
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
Notez que s'il y a beaucoup de Name
différents valeurs, vous devrez peut-être augmenter group_concat_max_len
de sa valeur par défaut de 1 Ko.