现在我有3张表,A,B,C,我希望A+B表连接后做一次查询,然后A+C表连接后做一次查询,然后把所有的结果显示在一个报表里,(当然也可以3表连接一起查然后一起显示,但还是要先显示A+B中数据,然后A+C中数据),但是由于B和C表的字段不一样,所以我没有想到好的办法来写jrxml,希望有好办法的朋友告诉我一下,谢谢了
[b]问题补充:[/b]
我补充一下,A表字段a1,a2,B表b1,b2,C表c1,c2然后我想在报表里这样
a1,a2,b1,b2
a1,a2,c1,c2
请问一楼的朋友,怎么把字段作为参数?
[b]问题补充:[/b]
是根据B表和C表里的数据情况先列出
a1,a2,b1,b2
然后再
a1,a2,c1,c2,
就是分开B,C里的数据关联A都显示出来
[b]问题补充:[/b]
真实的情况B和C表的字段数目还不一样,可能是b1,b2但有c1,c2,c3
[b]问题补充:[/b]
问题的关键是我的静态字段名称怎么处理? b1,b2,和c1,c2的字段名称是不一样的啊,各位高手们,帮帮我
我用的是iReport
先建一张报表sheet
在Data -> Report Query中写你查询a表的字段 这样可以使用结果积作为条件来连接b,c表
点击subreport按钮 建一张子报表subsheet1 里面写上sql语句把where后a表的条件以变量定义 然后默认设置
然后在sheet中右键点击子报表subsheet1->properties->subreport(other)
这里的subparamater就可以使用a表中的字段 给字报表中的paramater传值
这样就可以了
第二个子报表和这个原理一样
不过注意的是 在项目中要输入paramater中的SUBREPORT_DIR为子报表路径
如果路径是固定的 可以设置默认值
做子报表,A为主表,B,C分别为从表,将A的字段以Paramater传给B,C,
然后B,C分别以A传过来的条件查询就OK了。
可以试试这样:
[code="sql"]
SELECT A.a1, A.a2, B.b1, B.b2 FROM A, B
UNION
SELECT A.a1, A.a2, C.c1, C.c2 FROM A, C
[/code]
当然,这要求b1,b2和c1,c2的字段类型一致
如果你是一条语句可以出来的话
建议你使用2楼的。
我在三楼不是说的很清楚了么
-_-
你b,c的连接条件都是由a出来的 也就是说你主表必须查询出连接b,c的所有条件
你分别做两张子报表 一张a连b的 一张a连c的
然后放在主表中 不是可以用a查询出来的字段作为parameter分别传入两张子表中么
a连b的的子表根本不受另一张表影响啊
没关系的