php/html发票表,使用mysql数据将一个人的所有销售额合并到一行中
我有一个mysql表,其中包含我的成员的发票信息 发票表 我想将特定memberid的所有行合并到一个单独的行中,或者在一个临时mysql表中,或者干脆将其转储到一个html表中以供查看 示例-新发票表php/html发票表,使用mysql数据将一个人的所有销售额合并到一行中,php,mysql,sql,pivot,Php,Mysql,Sql,Pivot,我有一个mysql表,其中包含我的成员的发票信息 发票表 我想将特定memberid的所有行合并到一个单独的行中,或者在一个临时mysql表中,或者干脆将其转储到一个html表中以供查看 示例-新发票表 我需要这个新表来动态添加新项目和金额列,因为成员购买项目的次数未知。假设mem1购买了另一个项目,这个新表必须再添加两列item4,amount4。创建一个表,其中包含用户的外键、产品的外键和发票的外键。为产品、用户和发票创建单独的表。然后,使用连接将所有信息组合在一起。在MySQL中透视表很困
我需要这个新表来动态添加新项目和金额列,因为成员购买项目的次数未知。假设mem1购买了另一个项目,这个新表必须再添加两列item4,amount4。创建一个表,其中包含用户的外键、产品的外键和发票的外键。为产品、用户和发票创建单独的表。然后,使用连接将所有信息组合在一起。在MySQL中透视表很困难,但您确实有一个内置透视函数:GROUP\u CONCAT 这是我的建议 其思想是用html构建一个表,使用起始表等的标记 以下是html源代码中的表
<table border="1">
<tr>
<td>A1</td> <td>B1</td>
</tr>
<tr>
<td>A2</td> <td>B2</td>
</tr>
</table>
您可以使用组concat来构建此
SELECT
concat('<tr><td>',s.member_id,'</td>'
,group_concat(s.itempair SEPARATOR '')
,'</tr>') as row
FROM (
SELECT member_id, concat('<td>',item,'</td><td>',amount,'</td>') as itempair
FROM invoice ORDER BY member_id, item ) s
GROUP BY s.member_id;
现在你可以通过回显标签来启动表格,
回显选择列表中的所有行
最后是一个标签的回声
有关group_concat的更多信息
见:
php代码祝你好运。表是设计为静态结构的,为什么需要动态?表的列数是有限制的-你真的不想提取每个列的值…最好在MySQL之外进行数据透视,例如在php中,将行读入数组,当memberid更改时停止,并将其输出到行中。清除数组,读取下一系列memberid的所有值,并继续循环直到完成。至于列限制,我认为这不会是一个大问题,到目前为止,最多从单个成员处购买5或6个。即使这个数字增长到100或200,表也只有200到400列,这远远低于表的4000+硬限制。我需要这种结构,因为会计部门需要这种格式的数据,我想看看是否可以直接在网站后端为他们生成这些数据。若不能使用web代码来实现这一点,我想我会将数据的电子表格原样交给他们,他们可以在excel或其他软件中进行排序并生成数据透视表。但如果我能在网站上为他们做到这一点那就太好了我知道我要求很多。。。但是,你能给我一个简单的例子,说明在按照你建议的方式制作独立的表之后,将信息连接在一起的代码是什么吗?
<table border="1">
<tr>
<td>A1</td> <td>B1</td>
</tr>
<tr>
<td>A2</td> <td>B2</td>
</tr>
</table>
+--------+--------+
| A1 | B1 |
+--------+--------+
| A2 | B2 |
+--------+--------+
SELECT
concat('<tr><td>',s.member_id,'</td>'
,group_concat(s.itempair SEPARATOR '')
,'</tr>') as row
FROM (
SELECT member_id, concat('<td>',item,'</td><td>',amount,'</td>') as itempair
FROM invoice ORDER BY member_id, item ) s
GROUP BY s.member_id;