2014-04-15 4 views
0

두 개의 mysql 테이블에서 데이터를 가져와 날짜순으로 정렬하려고합니다. 두 가지 표는 소득과 지출에 관한 것이다. 달성하기 위해 노력하고있는 무엇입니까 처음으로 데이터를 표시하는 날짜에서 15/04/2014 소득 테이블, 다음 데이터를 표시합니다 15/04/2014 지출 테이블 및 다시 다음 날짜와 루프 및 표시 16/04/14와 관련된 데이터를 수입 표에서 계산 한 다음 지출 표에서 계산합니다. 현재 코드는 몇 번이나 반복됩니다. 소득표의 항목 중 이 문제를 해결하는 방법. 코드는 다음과 같습니다 :두 테이블의 데이터를 날짜별로 가져 오는 방법은 무엇입니까?

<?php 
    include "connection.php"; 
?> 
<table width="100%" border="1" align="center" cellpadding="2" cellspacing="2"> 
       <tr> 
        <td>Date</td> 
        <td>Particulars</td> 
        <td>Transaction Type</td> 
        <td>Sub Expense</td> 
        <td>Expense</td> 
        <td>Subincome</td> 
        <td>Income</td> 
        <td>Cash in Hand</td> 
        <td>Remarks</td> 
       </tr> 
       <?php 
       $datequery = mysql_query("select date from income order by date asc") or die (mysql_error()); 
       while ($row = mysql_fetch_array($datequery)) 
       { 
       $currentdate = $row['date'] ; 

       echo $currentdate."<br>"; 

          $result = mysql_query("SELECT * FROM income WHERE date = '$currentdate' ") or die (mysql_error()); 
          while ($row = mysql_fetch_array($result)) 
          { 
           ?> 
          <tr> 
           <td><?php echo $row['date']; ?></td> 
           <td><?php echo $row['particulars']; ?></td> 
           <td><?php echo $row['trntype']; ?></td> 
           <td>&nbsp;</td> 
           <td>&nbsp;</td> 
           <td><?php $subincome = $row['subincome']; echo $subincome ;?></td> 
           <td><?php $income = $row['income']; echo $income ?></td> 
           <td><?php $balance = $balance + $row['subincome'] + $row['income'] - $row['subexpense'] - $row['expense']; ; echo $balance; ?></td> 
           <td><?php echo $row['remarks']; ?></td> 
          </tr> 
              <?php 
          } 
             $result = mysql_query("SELECT * FROM expenditure WHERE date = '$currentdate' ") or die (mysql_error()); 
             while ($row = mysql_fetch_array($result)) 
             { 
              ?> 
             <tr> 
              <td><?php echo $row['date']; ?></td> 
              <td><?php echo $row['particulars']; ?></td> 
              <td><?php echo $row['trntype']; ?></td> 
              <td><?php echo $row['subexpense']; ?></td> 
              <td><?php echo $row['expense']; ?></td> 
              <td>&nbsp;</td> 
              <td>&nbsp;</td> 
              <td><?php $balance = $balance + $row['subincome'] + $row['income'] - $row['subexpense'] - $row['expense']; echo $balance; ?></td> 
              <td><?php echo $row['remarks']; ?></td> 
             </tr> 
             <?php 
             } 
       $date = strtotime($currentdate); 
       $date = strtotime("+1 day", $date);; 
       $currentdate = date('Y-m-d', $date); 

       } 
       ?> 
       </table> 
+0

무엇이 문제입니까/오류입니까? – shashank

답변

1

union all 연산자를 사용하여 단일 쿼리를 작성하고 그에 따라 정렬 할 수 있습니다. 내 쿼리를 넣고, 난 정렬 기준으로 더미 열을 추가 한, 그래서 나는 소득 행이 항상 지출에서 행 앞에 오는 것을 보장 할 수 있습니다 : 당신은 당신이 할 수있는 구식를 얻고 싶다면

SELECT * 
FROM (SELECT *, 1 AS dummy FROM income 
     UNION ALL 
     SELECT *, 2 AS dummy FROM expenditure) t 
ORDER BY `date` ASC, dummy ASC 
+0

이것은 동일한 순서로 동일한 데이터 유형의 수입 및 지출 테이블이 동일한 수의 컬럼을 갖거나 더미 컬럼을 추가하여 동일한 테이블을 작성할 수 있다고 가정합니다. –

+0

다음과 같이 이것을 시도해 보니, 문제는 소득과 지출의 차이를 가져야한다는 것입니다. 여기서는 계산하지 못했습니다. 내가 사용한 코드. –

+0

시도, 문제는 소득과 지출의 차이를 찾을 수 없습니다. $ result = mysql_query ("select *, 1 수입에서 더미 더미 UN 선택 ALL, * 2 지출에서 더미 더미 ORDER BY'date' ASC, dummy ASC"); while ($ row = mysql_fetch_array ($ result)) {echo ""입니다. $ row [ 'subexpense']. ""; 에코 "". $ row [ '비용']. ""; 에코 "". $ row [ 'subincome']. ""; 에코 "". $ row [ 'income']. "";$ cashinhand = $ cashinhand + $ row [ 'income'] + $ row [ 'income'] - $ row [ 'subexpense'] - $ row [ '비용']; 에코 "". $ cashinhand. ""; 에코 ""; } –

0

하나의 쿼리에서 오름차순으로 정렬 된 모든 수입 레코드와 오름차순으로 정렬 된 다른 쿼리의 모든 지출 레코드를 검색합니다. 각 결과 집합 배열에 인덱스를 유지 관리합니다. 날짜가 바뀔 때마다 배열 색인을 증가시키면서 앞으로 이동하십시오. 당신은 @ Mureinik의 대답에서 union all .. order by이 이루는 것 인 merge join을했습니다. 그래도 그의 길을해라. 더 좋습니다.

+0

시도했지만 문제는 수입과 지출의 차이를 찾을 수 없다는 것입니다. $ result = mysql_query ("select *, 1 수입에서 더미 더미 UN 선택 ALL, * 2 지출에서 더미 더미 ORDER BY'date' ASC, dummy ASC"); while ($ row = mysql_fetch_array ($ result)) {echo ""입니다. $ row [ 'subexpense']. ""; 에코 "". $ row [ '비용']. ""; 에코 "". $ row [ 'subincome']. ""; 에코 "". $ row [ 'income']. "";$ cashinhand = $ cashinhand + $ row [ 'income'] + $ row [ 'income'] - $ row [ 'subexpense'] - $ row [ '비용']; 에코 "". $ cashinhand. ""; 에코 ""; } –

관련 문제