Anda perlu melakukan PIVOT
operasi, yang tidak didukung secara asli di MySQL (tidak seperti beberapa RDBMS lainnya).
Yang paling dekat yang bisa Anda dapatkan adalah dengan membangun SQL di sepanjang baris berikut:
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
Jika memungkinkan Name
nilai dinamis, Anda dapat menghasilkan SQL seperti itu dalam bahasa tingkat yang lebih tinggi dari hasil:
SELECT DISTINCT Name FROM search_export
Memang, seseorang bahkan dapat menggunakan SQL itu sendiri:
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;
Perhatikan bahwa jika ada banyak Name
. yang berbeda nilai, Anda mungkin perlu meningkatkan group_concat_max_len
dari default 1KiB.