2016-09-27 14 views
0

私はあるテーブルからすべての値を取得しようとしていて、別のテーブルからいくつかの値を取得しようとしています。これは私が修正しようとしているデモ販売時点プログラムです。あるテーブルのすべての値と別のテーブルの値を選択し、それらを表示する

私が修正しようとしているセクションでは、最初に私がTRANSACTION IDDATEINVOICE NUMBERAMOUNTREMARKSを持っている販売レポートページ、です。別の表の値をいくつか追加したいとします(例:sales "NAME"と "QTY")。ここで

は私がやったことです:

  <?php 
       include('../connect.php'); 
       $d1=$_GET['d1']; 
       $d2=$_GET['d2']; 
       $result = $db->prepare("SELECT sales.* , sales_order.name, sales_order.qty FROM sales,sales_order WHERE date BETWEEN :a AND :b"); 
       $result->bindParam(':a', $d1); 
       $result->bindParam(':b', $d2); 
       $result->execute(); 
       for($i=0; $row = $result->fetch(); $i++){ 
      ?> 
      <tr class="record"> 
      <td>STI-000<?php echo $row['transaction_id']; ?></td> 
      <td><?php echo $row['date']; ?></td> 
      <td><?php echo $row['name']; ?></td> 
      <td><?php echo $row['invoice_number']; ?></td> 
      <tf><?php echo $row{'invoice_number'};?></td> 
      <td><?php 
      $dsdsd=$row['amount']; 
      echo formatMoney($dsdsd, true); 
      ?></td> 
      <td><?php echo $row['type']; ?></td> 
      </tr> 
      <?php 
       } 
      ?> 

    </tbody> 
    <thead> 
     <tr> 
      <th colspan="4" style="border-top:1px solid #999999"> Total </th> 
      <th colspan="2" style="border-top:1px solid #999999"> 
      <?php 
       function formatMoney($number, $fractional=false) { 
        if ($fractional) { 
         $number = sprintf('%.2f', $number); 
        } 
        while (true) { 
         $replaced = preg_replace('/(-?\d+)(\d\d\d)/', '$1,$2', $number); 
         if ($replaced != $number) { 
          $number = $replaced; 
         } else { 
          break; 
         } 
        } 
        return $number; 
       } 
       $d1=$_GET['d1']; 
       $d2=$_GET['d2']; 
       $results = $db->prepare("SELECT sum(amount) FROM sales WHERE date BETWEEN :a AND :b"); 
       $results->bindParam(':a', $d1); 
       $results->bindParam(':b', $d2); 
       $results->execute(); 
       for($i=0; $rows = $results->fetch(); $i++){ 
       $dsdsd=$rows['sum(amount)']; 
       echo formatMoney($dsdsd, true); 
       } 
       ?> 
      </th> 
     </tr> 
    </thead> 
</table> 
+0

2つのテーブルを1つのクエリで結合する方法を尋ねていますか?上記の通り – GrandMasterFlush

+0

のように、結合を使用する必要があります。どのフィールドがテーブルにあるのかを知らなくても、2つのテーブル間でどのように関連しているのかわからなくても、これをガイドするのは難しいです。 MySQLの結合を読んでも役立ちます。 –

+0

2つのテーブルを結合する場合は、投稿を更新して2つのテーブルの構造と互いの関係を教えてください。 –

答えて

0

は、テーブルsalessales_orderをリンクキーと仮定すると、あなたは、JOIN INNERを使用して2つのテーブルを結合する必要がある(またはLEFTは、ニーズに応じて、登録しようinvoice_numberフィールドです)以下のように:

$result = $db->prepare("SELECT sales.* , sales_order.name, sales_order.qty FROM sales INNER JOIN sales_order ON sales.invoice_number = sales_order.invoice_number WHERE sales.date BETWEEN :a AND :b"); 

2つのテーブルをリンクする鍵は何か他のものである場合には、ちょうど良い、列名に

に一致するように ON sales.invoice_number = sales_order.invoice_numberを更新

また、テーブルを結合するときに各フィールドの前にテーブルの名前を追加することを忘れないでください。複数のテーブルに同じフィールド名があると、mysqlはどのテーブルそれはデータを取得する必要があります。

関連する問題