【问题标题】:Compare 3 Products from same table with product name将同一表中的 3 个产品与产品名称进行比较
【发布时间】:2015-09-21 13:16:10
【问题描述】:
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

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

我需要使用 php 的产品比较页面。我能够从 mysql 提取查询中将行转换为列。问题是标题缺少“product_name”。

【问题讨论】:

  • 为什么不把转换代码提供给我们以便修改?
  • 我不明白你的问题

标签: php jquery json pivot


【解决方案1】:

您可以在纯 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 中做更好的工作(更具扩展性)。

【讨论】:

  • 感谢您的询问TOMAS....对我真的很有用。因为我寻找了需要更少处理时间的 php 数组脚本。无论如何,再次感谢您的回答
猜你喜欢
  • 1970-01-01
  • 2019-07-29
  • 1970-01-01
  • 1970-01-01
  • 2013-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-29
相关资源
最近更新 更多