需要获取具有mysql特定功能的所有产品

时间:2012-11-22 22:46:32

标签: php mysql sql

你好我在一些有3列的cms(产品)中有一个表:

product_id feature_id value
1          1          blue
1          8          cotton
2          5          t-shirt
2          1          red
3          8          wool
1          9          large

每个产品都有自己的ID,每个产品都有一个功能列表 (大约10个)每个feature_id代表一个特征。取决于 feature_id“value”列具有该类型特征的值。

E.x。想象衣服,1个独特的product_id - > 1布 - >许多功能/适当的材料,如颜色类型的材料价格大小等等。

问题是可以获取类似

的3行
product_id value1 value2
1          blue   large
2          red    medium
3          green  xsmall
4          purple xlarge

其中value1是产品1 feature_id = 1和时值列上的字符串 value2是产品1 feature_id = 9(feature_id for size)

时值列上的字符串

我无法弄清楚如何在一个语句中执行此操作,而无需在php中合并数组。

3 个答案:

答案 0 :(得分:1)

加入将起作用: http://dev.mysql.com/doc/refman/5.0/en/join.html

SELECT * FROM tbl_Products 
JOIN tbl_Features ON tbl_Products.product_id = tbl_Features.product_id
WHERE tbl_Features.feature_id = ?

SELECT * FROM tbl_Products 
JOIN tbl_Features ON tbl_Products.product_id = tbl_Features.product_id
WHERE tbl_Features.feature_id in (1, 2, 3, 4)

答案 1 :(得分:0)

你可以这样做:

select p.product_id
       (select value
          from product_features pf
         where pf.product_id = p.product_id
           and pf.feature_id = 1) as feature_1
       (select value
          from product_features pf
         where pf.product_id = p.product_id
           and pf.feature_id = 9) as feature_9
  from p.products

查询是标准SQL,因此任何兼容的数据库都应该接受它。

我假设你有一个带有products和product_features表的正常设计

答案 2 :(得分:0)

SELECT DISTINCT product_id AS book_id, (

SELECT value
FROM cscart_product_features_values
WHERE product_id = book_id
AND feature_id =  '1'
) AS publisher, (

SELECT value
FROM cscart_product_features_values
WHERE product_id = book_id
AND feature_id =  '8'
) AS author
FROM  `cscart_product_features_values` 
ORDER BY product_id

经过一些测试后,这很有效:)