Php 向MySQL结果添加动态列
我在mysql中有一个表,我们称它为Php 向MySQL结果添加动态列,php,mysql,Php,Mysql,我在mysql中有一个表,我们称它为foo,它的列数是有限的 | id | name | date | -------------------------- | 1 | bar | 2012-05-08 | | 2 | buba | 2012-05-09 | 我的用户可以将记录添加到表foo\u字段(例如,code,description,time…) 在表foo\u field\u value中存储用户定义字段的值,如下所示: | id | foo_id | foo_fie
foo
,它的列数是有限的
| id | name | date |
--------------------------
| 1 | bar | 2012-05-08 |
| 2 | buba | 2012-05-09 |
我的用户可以将记录添加到表foo\u字段
(例如,code
,description
,time
…)
在表foo\u field\u value
中存储用户定义字段的值,如下所示:
| id | foo_id | foo_field_id | value |
------------------------------------------
| 1 | 1 | 1 | b |
| 2 | 1 | 2 | Lalalala |
| 3 | 1 | 3 | 12:00 |
| 1 | 2 | 1 | c |
| 2 | 2 | 2 | We are go |
| 3 | 2 | 3 | 14:00 |
理想情况下,我想要一个查询,它会给我一个如下的结果
| id | name | date | code | description | time |
------------------------------------------------------
| 1 | bar | 2012-05-08 | b | Lalalala | 12:00 |
| 2 | buba | 2012-05-09 | c | We are go | 14:00 |
如果不为每个foo_字段在foo_fields_value表上进行内部联接(通过先执行另一个查询来使用PHP生成查询),这是否可能呢 您要查找的是pivot查询。由于您有需要转换为列的动态字段,请查看本文中有关生成自动透视查询的内容
只需一次就可以完成,而且非常简单 我们将稍微修改foo_字段表,添加一个与foo表的id列相对应的列,我假设它是主键 现在我们有了
* foo
|------|
| id |
| name |
| date |
|------|
* foo_field
|-------------|
| foo_id |
| code |
| description |
| time |
|-------------|
这意味着我们可以通过一个简单的查询添加额外的字段:
SELECT * FROM foo
LEFT JOIN foo_field ON foo.id = foo_field.foo_id
这将给我们一个
| id | name | date | foo_id | code | description | time |
|----+-------+------------+--------+--------+-------------+----------|
| 1 | asdw | 2012-05-16 | 1 | asdasd | asdasd | 15:03:41 |
| 2 | fdgfe | 2012-05-18 | 2 | asdas | asdas | 15:03:41 |
| 3 | asdw | 2012-05-16 | 3 | asdas | asdas | 15:03:52 |
| 4 | fdgfe | 2012-05-18 | 4 | asdasd | asdasd | 15:03:52 |
我仍然不确定我是否理解你的问题。如果您想创建真正的动态值和数据结构,我建议您将数组保存到数据库中的字段中,但如果是这种情况,我也建议您忽略您的解决方案;如果您希望您的解决方案能够增长,您需要尽可能严格地管理结构。每个foo记录是否可以有多个foo_字段值?是的,对代码=b,描述=LAL,time=12:00在foo_字段中有3条单独的记录,它们都与foo记录id 1有关。您误解了我的数据库结构,恐怕我会详细介绍我的操作。
| id | name | date | foo_id | code | description | time |
|----+-------+------------+--------+--------+-------------+----------|
| 1 | asdw | 2012-05-16 | 1 | asdasd | asdasd | 15:03:41 |
| 2 | fdgfe | 2012-05-18 | 2 | asdas | asdas | 15:03:41 |
| 3 | asdw | 2012-05-16 | 3 | asdas | asdas | 15:03:52 |
| 4 | fdgfe | 2012-05-18 | 4 | asdasd | asdasd | 15:03:52 |