想出来,解决方案如下!
我有一个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>
如果结果中没有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中获取数据,遍历结果以查找匹配项,并在结果存在时更改实际值 - 循环后,打印表格单元格,结果为**
答案 0 :(得分:1)
如果我理解正确,无论如何都需要打印<td>
。您的if
条件限制了打印<td>
- 只有在满足给定条件时才会打印<td>
。所以你需要改变它。相反,您需要执行此操作 - 通读docs
,获取fileType
。如果是file1,则为该变量赋值,该变量初始化为null。如果是file2,则为变量赋值,该变量初始化为null。然后测试该变量并打印“ - ”或每个案例的内容。
假设变量file1Data
和file2Data
分别表示来自{1}}的每次迭代的file1和file2的字符串数据,
docs