1

それを考え出した、以下の解決策!

次の構造を使用して、2 つのテーブルを持つデータベースからのデータが取り込まれている HTML テーブルがあります。

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

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

これら 2 つのテーブルを同様に結合しています。

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いずれの場合も、少なくとも 1 つの結果が期待されます。通常は、フィールドに基づいて並べ替えたい 2 つの結果です。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>
    }
}

いつものように、あなたの助けは大歓迎です!

**わかりました、ありがとう!解決:

私はロジックを2つのクエリに分割し、あなたが提案したものを使用しました:結果が存在する場合は実際の値を変更します-ループの後、結果を含む表のセルを出力します**

4

1 に答える 1

1

私が正しく理解していれば、何があっても両方を印刷する必要があります<td>。条件ifにより印刷が制限されます。指定された条件が満たされた場合にのみ<td>印刷されます。<td>したがって、それを変更する必要があります。代わりに、これを行う必要があります-読んdocsで、取得してfileTypeください。file1 の場合、null に初期化された変数にその値を割り当てます。file2 の場合、null に初期化された変数にその値を割り当てます。次に、その変数をテストし、「-」または各ケースの内容を出力します。

変数file1Dataおよびfile2Dataは、 に対する各反復についてそれぞれ 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>");
}
于 2012-04-06T13:32:57.787 に答える