我有以下代码和数据库。我的意图是最终用户可以从数据库中选择列(通过'ajax'ing选项/从mysql直接选择)并运行它们的报告。我可以预先确定他们使用的表,他们选择列。 我最大的问题是执行“计划”查询的最佳方式。
要运行计划,我需要来自“客户”和“交付”的详细信息 - (客户信息和交付地址),并使用所有表格中的“custnum”以及年份来选择要运行的年度计划 - 即custnum bar12345 - 年度计划表为bar123452012
从bar123452012表中每个'custnum'可能有2个产品。
这个表只是每个产品一行,但是367列,1- prodid和366标题为 yday 整数。如果它需要在一年中使用365或366在不同的功能,PHP工作。
你会建议什么?一个php循环来逐个拉出所有客户并在表格中进行格式化,或者是否存在一个SQL查询,该查询将根据tindex将每个行的左表加入另一个表。 2012id? 需要速度和效率,因为我们正在谈论至少200个客户表,可能高达1000个。
感谢Dwurf进行现实检查。重组数据库以拥有一个计划表,并从中开始工作。
感谢Dwurf。新设计正在整个下午工作......数据库
表客户的表结构
custnum varchar(255)否
姓氏varchar(50)没有
name varchar(50)没有
phone1 varchar(50)没有
phone2 varchar(50)没有
email varchar(50)没有
add1 varchar(50)否
add2 varchar(50)没有
city varchar(50)没有
邮政编码varchar(10)否
表格deliverydetails的表结构
特殊varchar(50)没有
add1 varchar(50)否
add2 varchar(50)没有
city varchar(50)没有
邮政编码varchar(10)没有
custnum varchar(100)否
表格注释的表结构
custnum varchar(50)没有
notes varchar(50)没有
时间戳No CURRENT_TIMESTAMP
表格产品组的表结构
pgroup varchar(20)否
name varchar(50)没有
description varchar(50)否
表产品的表结构
name varchar(50)否
quantity varchar(50)没有
description varchar(50)没有
pgroup varchar(50)没有
price varchar(50)没有
picture varchar(100)没有
productid varchar(10)没有
suppid varchar(50)没有
vat tinyint(1)否
表格表的表格结构
productid varchar(15)否
d0 varchar(100)否
d1 varchar(100)是NULL
d2 varchar(100)是NULL
.......
d362 varchar(100)是NULL
d363 varchar(100)是NULL
d364 varchar(100)是NULL
d365 varchar(100)是NULL
custnum varchar(50)否
id int(50)否
表供应商的表结构
suppid varchar(50)没有
name varchar(50)没有
phone1 int(100)否
phone2 int(100)否
email varchar(100)没有
add1 varchar(50)否
add2 varchar(50)没有
city varchar(50)没有
邮政编码varchar(10)没有
description varchar(100)否
表格vatgroups的表结构
vat int(20)否
小数(20,0)否
description varchar(20)否
答案 0 :(得分:0)
你会建议什么?一个php循环,逐个拉出所有客户并在表格中格式化,
这种方法对性能有自杀倾向
或者是否存在一个SQL查询,它将根据tindex将每个行的不同表连接到另一个表。 2012id?!
对于您在问题中概述的设计,这实际上是不可能的。设计更改可能会有所帮助:如果您的所有报表都有一个表格,并且您为报表名称添加了一列,那么您将更加接近。考虑类似的事情:
Table structure for table Reports
custnum varchar(255) No
productid varchar(15) No
date DateTime No
现在,您可以构建一个查询来获取特定客户的所有行
select * from Reports
where date between '2012-01-01' and '2013-01-01'
and custnum = 'bob54326'
使用PHP(或您正在使用的任何内容)从这些结果中生成表格。
我知道这种策略会破坏你的“从UI直接表访问”模式,但我担心模型根本不能很好地工作。更改您的设计以使用您拥有的工具,而不是试图强制工具符合您的设计。