交叉报表计算问题。
现有原型填报如下:
数据库设计分为三个表,主表存时间和线别等数据,站点子表存填写了数据的站点名称,和主表 id 关联,时间子表存车次、车次号、列车到点、列车开点数据,同样和主表 id 关联。
表结构和数据如下:
主表:
站点子表:
时间子表:
最终要形成一张以下格式的交叉报表(到点开点我用 mysql 函数拼接在一起了,占用一个格子):
但是填报时车次和站点都是动态的,所以站点子表只存填写过时间数据的站点。
例如:如果填报时共有车次 1、车次 2、车次 3 共三个车次,并且只有车次 1 填写了三个站点的时间数据,那么主表存一条,站点子表存三条站点名称,时间子表存 9 条,包括车次 1 的三条时间数据,和车次 2、车次 3 的 3 条空数据。
因为报表要展示全部站点,并且对应的时间子表和站点子表用 SQL 不能直接关联,会产生笛卡尔积,想问一下再加上报表的函数能不能实现这个展示页面,该怎么实现。
填报表建议设置成原型那种,左侧是站点,上方是车次,每个车次是两列,到点和开点那种,不建议用斜线这个,斜线这个填报时不支持填写时用斜线分开,所以要用两列来做。用两列做的话就是个交叉填报表,可以参考下 http://c.raqsoft.com.cn/article/1556413873332 这个说明。
因为填写时车站和车次要是全的,数据来源要弄三个数据对象,分别是左侧车站、上方车次、以及时间,车站、车次分别来自不同的数据表,所以展示时左侧和上次就是全的。