簡體   English   中英

從一個表中選擇所有值,從另一個表中選擇一些值,並用php顯示它們

[英]select all the values from one table and some values from another table and display them with php

我試圖從一個表中獲取所有值,並從另一表中獲取一些值,並使用php和html顯示它們。 這是我要修改的演示銷售點程序。

我要修改的部分是銷售報告頁面,最初我具有TRANSACTION IDDATEINVOICE NUMBERAMOUNTREMARKS 我想從另一個表中添加一些值(即銷售“ 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>

假設鏈接表salessales_order的鍵是字段invoice_number您必須使用INNER JOIN(或根據您的需要選擇LEFT JOIN)將兩個表連接起來,如下所示:

$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");

如果鏈接兩個表的鍵是其他鍵,則只需更新ON sales.invoice_number = sales_order.invoice_number以匹配良好的列名

另外,在連接表時,請不要忘記在每個字段之前添加表名,因為如果在多個表中具有相同的字段名,則會給您一個錯誤,因為mysql不會知道必須在哪個表中從中獲取數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM