好了,所以我知道我可能会用于扩孔甚至暗示这样的事情,但它有我好奇...MySQL:LEFT JOIN或UNION表,并将列值设置为列名?
让我们假设我有这样一个表:
content
---------------
| id | status |
和像这样的表:
attributes
---------------------------
| id | pid | name | value |
其中一些属性可能是
| 1 | 1 | status | published |
| 2 | 1 | viable | yes |
是可以做查询,以便名称列中的属性值将表示为列名称?
例子:
SELECT a.name AS {a.name value} FROM content c LEFT JOIN attributes a ON a.pid = c.id
所以,当我通过运行结果我可以做类似
foreach($result as $r){
echo $r->viable; //yes
echo $r->status; //published
}
我知道这不符合关系型数据库福,但它是有用的我一些多余的属性。我想到的另一个选择是将数据存储为一个序列化的字符串,但这让我感到畏缩。
你知道所有的名字被用作提前列,或者是他们的动态? –
你所要求的称为“数据透视表”http://stackoverflow.com/search?q=mysql+pivot+table http://stackoverflow.com/search?q=%5Bmysql%5D+rows+到+列 –
他们是动态的,所以我没有提前列出他们的清单。 –