2014-12-16 2 views
0

이것은 내가 한 것입니다. 주식 아래에 stockidid, 주식 이름과 주식 가격을 원합니다. 그러나 불행히도 계속 반복됩니다. 제가 의미하는 바는 S0001 XXX 19.90만을 가지고 있다고 가정합니다. 대신 S0001 ABC 19.90, S0002 ABC 19.90, S0003 ABC 19.90, S0004 ABC 19.90을 가지고 있습니다. 그런 다음 S0001로 돌아가고 ABC가 내 데이터베이스의 다음 값으로 변경됩니다. 즉, 내 stockname 이름 루프를 4 번 반복하는 동안 내 주식은 12 번 반복됩니다.값이 계속 반복됩니다.

<sql:setDataSource url="jdbc:derby://localhost:1527/healthdb;user=nbuser;password=nbuser" driver="org.apache.derby.jdbc.ClientDriver" 
         var="Derbydata"/> 
<sql:query sql=" SELECT stockid FROM STOCKS" dataSource="${Derbydata}" var="STOCKS" /> 
<sql:query sql=" SELECT stockname FROM STOCKS" dataSource="${Derbydata}" var="STOCKS1" /> 
<sql:query sql=" SELECT stockprice FROM STOCKS" dataSource="${Derbydata}" var="STOCKS2" /> 
<table border="1"> 
       <thead> 
        <tr><th> 
       Stock ID 
       </th> 
       <th> 
       Stock Name  
       </th> 
       <th> 
        Stock Price 
       </th> 
        </tr> 
       </thead> 
       <tbody> 

         <c:forEach var="row3" items ="${STOCKS2.rowsByIndex}"> 
          <c:forEach var="row2" items ="${STOCKS1.rowsByIndex}"> 
          <c:forEach var="row1" items="${STOCKS.rowsByIndex}"> 
       <tr> 
        <td> 
       <c:out value="${row1[0]}"/> 
        </td> 

        <td> 
         <c:out value="${row2[0]}"/> 
        </td> 

        <td> 
         <c:out value="${row3[0]}"/> 
        </td> 
       </tr> 
+0

쿼리를 변경하고 foreach는 논리는 나에게 정말 잘못 보인다. – drgPP

+0

3 개의 쿼리를 실행하는 것처럼 보입니다. 표시하려는 세 필드 모두에 대해 * one * 쿼리를 실행해야합니다. –

+0

SELECT * FROM STOCKS – Secondo

답변

0

은 단순히 현장에 쿼리를 원하고 사용할 인덱스 또는 0 1 2 ....

<sql:query sql=" SELECT stockid,stockname,stockprice FROM STOCKS" dataSource="${Derbydata}" var="STOCKS" /> 
         <c:forEach var="row1" items="${STOCKS.rowsByIndex}"> 
      <tr> 
       <td> 
      <c:out value="${row1[0]}"/> 
       </td> 
       <td>    <c:out value="${row1[1]}"/></td> 

       <td>    <c:out value="${row1[2]}"/></td> 

      </tr> 
+1

당신은 요점을 얻습니다 :) – drgPP

관련 문제