mysql - 从 SQL 中的 LEFT JOIN 创建矩阵/表

标签 mysql join matrix left-join

我想知道将 LEFT JOIN 转换为表/矩阵的好的解决方案。

例如,给定此架构:

objects
   id (integer)
   name (string)

attributes
   id (integer)
   object_id (integer)
   name (string)
   value (string)

以及这些值:

1,ball
2,box

1,1,colour,red
2,1,shape,sphere
3,1,material,rubber
4,2,colour,brown
5,2,shape,cube

我想得到这个:

object_id | object_name | colour | shape  | material

1         | ball        | red    | sphere | rubber
2         | box         | brown  | cube   | NULL

理想情况下,每个对象的属性数量未知,并且适用于不使用存储过程的 MySQL。

最佳答案

关于 RDBMS 的事情s 是它们的目的是存储和呈现您已经拥有的东西。从来没有打算动态创建列。

这种情况应该在呈现数据的客户端上处理。

不管 RDBMS 应该如何使用,您仍然找不到执行此操作的简单方法。如果您希望列列表是动态的,则尤其如此。您可以构建一个动态 SQL 查询并执行它,但是没有办法编写一个标准的 SQL 查询并获得该结果(因为您总是明确指定所有列,禁止使用 *,但这不能在这种情况下对你有利。)

关于mysql - 从 SQL 中的 LEFT JOIN 创建矩阵/表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1153325/

相关文章:

mysql - 触发器在mysql中添加元组

php - 从 mysql 列获取整数值,该列为 varchar

sql - 在没有唯一键的情况下连接两个表中的数据

sql - 什么时候需要在 SQL 中给表名一个别名?

将矩阵中每个等于 0 的元素替换为上一行的相应元素

php - 如何将逗号分隔值分组为不同的排序逗号分隔值

php - MySQL/PHP 插入同一行两次

mysql - 如何在 MySQL 的左连接中使用 OR ?

python - 将行和列的总和附加到矩阵

c++ - 为什么 Eigen(版本 3.2.5)无法得到正确的转置矩阵