Php Mysql-如何在一条记录中为自定义字段标题和数据连接表

Php Mysql-如何在一条记录中为自定义字段标题和数据连接表,php,mysql,sql,database-design,select,Php,Mysql,Sql,Database Design,Select,产品表: id product_name ----------------- 20 Toy Car id product_id label value ----------------------------- 1 20 Price 20.00 2 20 Color Red 产品属性表格: id product_name ----------------- 20 Toy Car id product_id label

产品
表:

id   product_name
-----------------
20   Toy Car
id  product_id  label  value
-----------------------------
1   20          Price  20.00
2   20          Color  Red
产品属性
表格:

id   product_name
-----------------
20   Toy Car
id  product_id  label  value
-----------------------------
1   20          Price  20.00
2   20          Color  Red
需要sql语句返回一行,其中包含类似于so的值和标题

id,  product_name,  price,  color
----------------------------------
20   Toy Car        20.00    Red

这就是您正在寻找的:

SELECT 
  Products.id, 
  Products.product_name,
  Max(case label when 'Price' then product_attr.value else null end) as price,
  Max(case label when 'Color' then product_attr.value else null end) as color
FROM Products 
  LEFT JOIN product_attr 
    ON Products.is = product_attr.product_id
GROUP BY Post.headline, Post.date
但是,我应该写一些关于您设计的注意事项:

  • 如果一个产品有一个以上的记录,比如说颜色,会发生什么?(同样适用于价格)
  • LEFT JOIN
    是为了确保产品始终都会出现。但是,一个产品不能有颜色吗?还是价格
  • 您正在尝试使用通用属性,但正在丢失键入系统,将字符串和数字混合(
    product\u attr
    中的
    value
    字段)。这是令人困惑的,永远不会有好的结局
  • 总而言之:产品有颜色吗?在
    产品中声明颜色字段
    !产品有价格吗?在
    产品中声明价格字段

对不起,阿德里安。我没有澄清。我只是把它作为一个通用的例子。我的问题是产品属性中的标签/值始终可以是唯一的或更改的。我总是只拉1行,但它的任何属性我都想拉字段\ u name=>值。我正在使用它进行excel导出,可能只需要使用php构建一个数组并以这种方式转储它。可能还需要重新考虑设计:)