我想知道将 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/