【发布时间】:2012-04-06 13:17:08
【问题描述】:
想通了,下面的解决方案!
我有一个 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 可以是file1 或file2。
<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>
}
}
一如既往,非常感谢您的帮助!
**想通了,谢谢!解决方案:
我将逻辑分解为两个查询,然后使用您的建议: - 第一个查询从 table1 中获取数据,设置 HTML 表 - 设置两个变量(fileData1, fileData2) null - 第二个查询从 table2 中获取数据,遍历结果以查找匹配项,如果结果存在则更改实际值 - 循环后,打印带有结果的表格单元格**
【问题讨论】:
标签: java mysql if-statement