Sie müssen einen PIVOT
durchführen Vorgang, der in MySQL nicht nativ unterstützt wird (im Gegensatz zu einigen anderen RDBMS).
Das Beste, was Sie erreichen können, ist, SQL wie folgt zu konstruieren:
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
Wenn der mögliche Name
Werte dynamisch sind, könnten Sie solches SQL in einer höheren Programmiersprache aus den Ergebnissen von generieren:
SELECT DISTINCT Name FROM search_export
Tatsächlich könnte man sogar SQL selbst verwenden:
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;
Beachten Sie, dass es viele verschiedene Namen
gibt Werte müssen Sie möglicherweise group_concat_max_len
von der Standardgröße von 1 KiB.