2012-04-06 79 views
1

想通了,解决方案在下面!根据结果将输出数据格式化为表格

我正在被数据填充从数据库中使用以下结构的两个表的HTML表格:

Table 1: 
------------------------------ 
|id|data|other_data|more_data| 
------------------------------ 

Table 2: 
-------------------------------- 
|id|entryId|fileType|other_data| 
-------------------------------- 

我类似地接合这两个表:

SELECT * FROM table1 LEFT JOIN table2 ON table2.entryId = table1.id 

样品退货:

------------------------------------------------------------ 
|id|data|other_data|more_data|id|entryId|fileType|other_data| 
------------------------------------------------------------- 
|1 |....|..........|.........|1| 1  |file1 |..........| 
|1 |....|..........|.........|2| 1  |file2 |..........| 
|2 |....|..........|.........|3| 2  |file1 |..........| 
|2 |....|..........|.........|4| 2  |file2 |..........| 
|3 |....|..........|.........|5| 3  |file1 |..........| 
|4 |....|..........|.........|6| 4  |file2 |..........| 

对于每种情况,我期望至少在e结果,通常两个,我想根据fileType字段进行排序。 fileType可以是file1file2

<table> 
<tr> 
<td>file1 data here</td> 
<td>file 2 data here</td> 
</tr> 
</table> 

如果在结果没有文件1或文件2,插入一个破折号( - ),但始终保持该表以同样的方式构成,并以相同的顺序。我怎样才能做到这一点?我尝试了一个简单的if/else结构,但是我的逻辑错误,并且按顺序返回数据;我在解决问题时遇到了麻烦。

while(docs.next) { 

if(docs.getString("fileType").equals("file1")) { 
     .....<td>file 1 data</td> 
    } 

else if(docs.getString("fileType").equals("file2")){ 
     .....<td>file 2 data</td> 
    } 
} 

与往常一样,您的帮助非常感谢!

**想通了,谢谢!解决方案:

我打破了逻辑分为两个查询,然后用你的建议是什么: - 第一个查询从表1抓取数据,建立HTML表格 - 设置两个变量(fileData1,fileData2)空 - 第二查询抓取数据如果结果存在,则循环查找匹配结果并更改实际值 - 循环后,打印具有结果的表格单元格**

回答

1

如果我理解正确,则无论打印什么内容,都需要同时打印<td> 。您的if条件限制了打印<td> - 仅在满足给定条件时才会打印<td>。所以你需要改变它。相反,你需要做到这一点 - 通过docs,得到fileType。如果它是file1,则将其赋值给一个已初始化为null的变量。如果它是file2,则将其赋值给一个已初始化为null的变量。然后测试该变量并打印“ - ”或每个案例的内容。

假设变量file1Datafile2Data分别从file1和file2的表示每个迭代超过docs字符串数据,

while(docs.next) { 
    String file1Data = null; 
    String file2Data = null; 
    if(docs.getString("fileType").equals("file1")) { 
    // assign value for fiel1Data here 
    } 
    if(docs.getString("fileType").equals("file2")) { 
    // assign value for fiel2Data here 
    } 
    System.out.println("<tr>"); 
    System.out.println("<td>" + (file1Data == null || file1Data.equals("")?"-" : file1Data) + "</td>"); 
    System.out.println("<td>" + (file2Data == null || file2Data.equals("")?"-" : file2Data) + "</td>"); 
    System.out.println("</tr>"); 
} 
+0

这让我更接近解决我的问题,但不会这种力量我回去两行除了文件之外还有重复的数据。除了“fileType”字段外,我当前的查询返回两行中两行的数据都是相同的。我只想在一个单独的单元格中显示一个包含两个文件的表格行。 – ph34r 2012-04-06 14:10:46

+0

我想出了使用你的建议,并分解成两个查询。我在我原来的问题中发布了解决方案。谢谢你的帮助! – ph34r 2012-04-06 14:33:02