php - MySQL 从两列表中选择

标签 php mysql prestashop-1.6

我有一个只有 2 列的表。 例如

table product.combinations
Column 1: product.id
Column 2: attribute.id

Product.id 是唯一的 每个产品可以有 1 个或多个属性。 没有属性的产品不在表中

例如

表产品.组合

产品.id |属性.id

  1    |     1      |
  1    |     2      |
  2    |     1      |
  2    |     2      |
  5    |     1      |
  5    |     3      |
  9    |     2      |
  9    |     3      |
  9    |     5      |

现在我想做一个选择,结果如下

产品.id |属性1 |属性2 |属性 3 |属性 4 |属性5

  1    |     1      |    2       |            |            |
  2    |     1      |    2       |            |            |
  5    |     1      |    3       |            |            |
  9    |     2      |    3       |     5      |            |

我已经尝试过使用枢轴,但未能获得良好的结果。 有人可以帮我吗?

最佳答案

第一:不要在表/列名称中使用点/句点,这不起作用,请使用下划线。

其次,如果可以将所有属性 id 放在逗号分隔的列表中,则可以执行以下操作(使用 MySQL 的 GROUP_CONCAT 函数):

mysql> SELECT
    -> product_id, GROUP_CONCAT(attribute_id ORDER BY attribute_id) AS attributes
    -> FROM product_combinations
    -> GROUP BY product_id
    -> ORDER BY product_id;
+------------+---------------+
| product_id | attributes    |
+------------+---------------+
|          1 | 1,2           |
|          2 | 1,2           |
|          5 | 1,3           |
|          9 | 2,3,5         |
+------------+---------------+
4 rows in set (0.00 sec)

关于php - MySQL 从两列表中选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30705474/

相关文章:

php - 获取简单的 html 文本字段以发布到 mysql 数据库

mysql - 覆盖 Controller /模块以创建产品

MySQL 查询不显示重复的 id

php - 如何将 "N"天添加到 $smarty.now?

PHP+CSS 混淆 - PHP ord THEN PHP strrev + CSS 反向文本,如何向后验证特殊字符?

php - 子查询 JOIN 同时保持逻辑

php - CouchDB View 可访问,但不会运行查询

php - 属性作为数组

java - java从结果集中获取数据

php - MySQL:您可以根据第三个表中的字段值来选择要选择的表吗?