根据结果​​将输出数据格式化为表格

时间:2012-04-06 13:17:09

标签: java mysql if-statement

想出来,解决方案如下!

我有一个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   |..........|

对于每种情况,我期待至少一个结果,通常是两个我想根据fileType字段排序的结果。 fileType可以是file1file2

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

如果结果中没有file1或file 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>
    }
}

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

**想出来,谢谢!溶液

我将逻辑分成两个查询,然后使用你的建议:   - 第一个查询从table1中获取数据,设置HTML表   - 设置两个变量(fileData1,fileData2)null   - 第二个查询从table2中获取数据,遍历结果以查找匹配项,并在结果存在时更改实际值   - 循环后,打印表格单元格,结果为**

1 个答案:

答案 0 :(得分:1)

如果我理解正确,无论如何都需要打印<td>。您的if条件限制了打印<td> - 只有在满足给定条件时才会打印<td>。所以你需要改变它。相反,您需要执行此操作 - 通读docs,获取fileType。如果是file1,则为该变量赋值,该变量初始化为null。如果是file2,则为变量赋值,该变量初始化为null。然后测试该变量并打印“ - ”或每个案例的内容。

假设变量file1Datafile2Data分别表示来自{1}}的每次迭代的file1和file2的字符串数据,

docs