交叉报表计算问题。

现有原型填报如下:

imagepng

数据库设计分为三个表,主表存时间和线别等数据,站点子表存填写了数据的站点名称,和主表 id 关联,时间子表存车次、车次号、列车到点、列车开点数据,同样和主表 id 关联。

表结构和数据如下:

主表:

imagepng

imagepng

站点子表:

imagepng

imagepng

时间子表:

imagepng

imagepng

最终要形成一张以下格式的交叉报表(到点开点我用 mysql 函数拼接在一起了,占用一个格子):

imagepng
但是填报时车次和站点都是动态的,所以站点子表只存填写过时间数据的站点。

例如:如果填报时共有车次 1、车次 2、车次 3 共三个车次,并且只有车次 1 填写了三个站点的时间数据,那么主表存一条,站点子表存三条站点名称,时间子表存 9 条,包括车次 1 的三条时间数据,和车次 2、车次 3 的 3 条空数据。

因为报表要展示全部站点,并且对应的时间子表和站点子表用 SQL 不能直接关联,会产生笛卡尔积,想问一下再加上报表的函数能不能实现这个展示页面,该怎么实现。