如何将下表中的数据导出到cvs excel文件中,以便dog_attributes中的所有属性都有自己的列,主要使用MySQL?
注意:
有四张桌子。
group_tbl - 群组由管理员设置,用于包含常用元素。
+----+---------+
| id | var1 |
+----+---------+
| 1 | data |
| 2 | data |
+----+---------+
group_elements_tbl - 包含管理员设置的元素。这些是用户填写的表单字段。
+----+----------+-----------+
| id | group_id | elmt_name |
+----+----------+-----------+
| 1 | 1 | height |
| 2 | 1 | color |
| 3 | 2 | breed |
+----+----------+-----------+
dogs_tbl - 包含每个用户创建的狗。
+----+----------+---------+
| id | group_id | name |
+----+----------+---------+
| 1 | 1 | Rover |
| 2 | 1 | Buck |
| 3 | 2 | Rex |
+----+----------+---------+
dog_attributes_tbl - 包含管理员在groups_elements_tbl中设置的自定义元素的值。
+----+--------------------+------------+
| id | group_elements_id | attr_value |
+----+--------------------+------------+
| 1 | 1 | 54 inches |
| 2 | 2 | brown |
| 3 | 1 | 34 inches |
| 3 | 2 | white |
| 4 | 3 | husky |
+----+---------+------------+
第1组的最终Excel电子表格(group_id = 1):
+--------+----------+-----------+--------+
| dog_id | dog_name | height | color |
+--------+----------+-----------+--------+
| 1 | Rover | 54 inches | brown |
| 2 | Buck | 34 inches | white |
+--------+----------+-----------+--------+
第2组的最终Excel电子表格(group_id = 2):
+--------+----------+-----------+
| dog_id | dog_name | breed |
+--------+----------+-----------+
| 3 | Rex | husky |
+--------+----------+-----------+
答案 0 :(得分:2)
最快的方法是以编程方式处理这些属性 - 不使用SQL
。
你应该抓住所有的狗,在第二次请求你感兴趣的狗的所有属性并将其与foreach
等合并
答案 1 :(得分:0)
我会创建一个包含字段的临时表:
group_id
dog_id
dog_name
elmt_name
attr_value
这是原始数据库的平面表示。两件重要的事情:
1)此表必须使用mysql存储过程生成,而不是使用php AND在一个事务中生成。否则,如果你有成千上万的狗,它将会很慢。
2)此平面表是报表的特殊缓存表。如果狗数据变化缓慢,则在更改狗数据之前无需删除它。
然后使用简单查询即可生成excel导出。不要忘记索引!