2015-09-21 63 views
0
CREATE TABLE spec_property 
    (`spm_id` int, `spec_value` varchar(11), `product_name` varchar(55)) 
; 

INSERT INTO spec_property 
    (`spm_id`, `spec_value`, `product_name`) 
VALUES 
    (6, 'android', 'phone 1'), 
    (7, '4GB', 'phone 1'), 
    (7, '2GB', 'phone 2'), 
    (7, '2GB', 'phone 3'), 
    (11, '8mp', 'phone 1') 

http://sqlfiddle.com/#!9/d38db比較來自相同的表3級的產品有產品名稱

+--------+---------------------+---------------------+---------------------+ 
| spm_id | col1    | col 2    | col 3    | 
+--------+---------------------+---------------------+---------------------+ 
| Name| phone1    | phone2    |phone3    | 
|  6 | android    |      |      | 
|  7 | 4GB     | 2GB     | 2GB     | 
|  11 | 8mp     |      |      | 
+--------+---------------------+---------------------+---------------------+ 

我需要的產品使用PHP比較頁。我能夠從MySQL提取查詢轉換成列。問題是結果缺少title_name的「product_name」。

+0

爲什麼不給我們提供convertion代碼以修改它? – CDrosos

+0

我沒有得到你的問題 –

回答

0

你可以這樣做純粹的MySQL(不理想,但給你想要的結果)

SELECT "Name" as spm_id, "phone1" as col1 , "phone2" as col2 ,"phone3" as col3 

UNION 

SELECT spm_id, GROUP_CONCAT(col1) as col1, GROUP_CONCAT(col2) as col2, GROUP_CONCAT(col3) as col3 FROM (
    SELECT spm_id, 
     IF(product_name = "phone 1", spec_value,NULL) as col1 , 
     IF(product_name = "phone 2", spec_value,NULL) as col2, 
     IF(product_name = "phone 3", spec_value,NULL) as col3 
    FROM spec_property 
) AS tmp 
GROUP BY spm_id 

http://sqlfiddle.com/#!9/fc7c89/2/0
我認爲你可以做在PHP更好的工作(更可擴展),以及一些基本的查詢和數組。

+0

感謝您的查詢** TOMAS ** ....真的對我有用。因爲我查找的PHP數組腳本將花費更少的處理時間。無論如何,再次感謝您的答案 – mike