SQL 查询 SELECT 多个表中的多个列以供显示

SQL query to SELECT multiple columns from multiple tables for display

我有一个 products table 和一个 inventory_order_product table。我需要 select product_idproduct_nameproduct_unitproduct_status 来自 products table 以及 quantity来自 inventory_order_product table。我还需要以这种格式输出它 - Product Name (Quantity ProductUnit) 示例 LG LED TV (20 Cartons)

我试过了,它没有显示任何东西

function fill_product_list($connect)
{
    $query = "
    SELECT products.product_id, products.product_name, products.product_unit, products.product_status
    inventory_order_product.quantity
    FROM products INNER JOIN inventory_order_product
    ON products.product_id = inventory_order_product.product_id
    WHERE products.product_status = 'active' 
    ORDER BY products.product_name ASC
    ";
    $statement = $connect->prepare($query);
    $statement->execute();
    $result = $statement->fetchAll();
    $output = '';
    foreach($result as $row)
    {
        $output .= '<option value="'.$row["product_id"].'">'.$row["product_name"].' ('.$row["quantity"].' '.$row["product_unit"].')</option>';
    }
    return $output;
}

我需要 select 所有 active 的产品,这就是我也需要 select product_status

的原因

编辑:在我调整 SQL 语句

之前,我包含了调用函数 fill_product_list 和原始函数的部分

这是我在插入数据时调用函数的地方 - 创建新订单

if(isset($_POST['btn_action']))
{
    if($_POST['btn_action'] == 'Add')
    {   
        $query = "
        INSERT INTO inventory_order (user_id, inventory_order_total, inventory_order_date, inventory_order_name, inventory_order_address, payment_status, inventory_order_status, inventory_order_created_date) 
        VALUES (:user_id, :inventory_order_total, :inventory_order_date, :inventory_order_name, :inventory_order_address, :payment_status, :inventory_order_status, :inventory_order_created_date)
        ";
        $statement = $connect->prepare($query);
        $statement->execute(
            array(
                ':user_id'                      =>  $_SESSION["userid"],
                ':inventory_order_total'        =>  0,
                ':inventory_order_date'         =>  $_POST['inventory_order_date'],
                ':inventory_order_name'         =>  $_POST['inventory_order_name'],
                ':inventory_order_address'      =>  $_POST['inventory_order_address'],
                ':payment_status'               =>  $_POST['payment_status'],
                ':inventory_order_status'       =>  'active',
                ':inventory_order_created_date' =>  date("Y-m-d")
            )
        );
        $result = $statement->fetchAll();
        $statement = $connect->query("SELECT LAST_INSERT_ID()");
        $inventory_order_id = $statement->fetchColumn();

        if(isset($inventory_order_id))
        {
            $total_amount = 0;
            for($count = 0; $count<count($_POST["product_id"]); $count++)
            {
                $product_details = fetch_product_details($_POST["product_id"][$count], $connect);
                $sub_query = "
                INSERT INTO inventory_order_product (inventory_order_id, product_id, quantity, price, tax) VALUES (:inventory_order_id, :product_id, :quantity, :price, :tax)
                ";
                $statement = $connect->prepare($sub_query);
                $statement->execute(
                    array(
                        ':inventory_order_id'   =>  $inventory_order_id,
                        ':product_id'           =>  $_POST["product_id"][$count],
                        ':quantity'             =>  $_POST["quantity"][$count],
                        ':price'                =>  $product_details['price'],
                        ':tax'                  =>  $product_details['tax']
                    )
                );
                $base_price = $product_details['price'] * $_POST["quantity"][$count];
                $tax = ($base_price/100)*$product_details['tax'];
                $total_amount = $total_amount + ($base_price + $tax);
            }
            $update_query = "
            UPDATE inventory_order 
            SET inventory_order_total = '".$total_amount."' 
            WHERE inventory_order_id = '".$inventory_order_id."'
            ";
            $statement = $connect->prepare($update_query);
            $statement->execute();
            $result = $statement->fetchAll();
            if(isset($result))
            {
                echo 'Order Created Successfully.';
                echo '<br />';
                echo "Total Price: $". $total_amount;
                echo '<br />';
                echo "Order Number: ".$inventory_order_id;
            }
        }
    }
}

此外,在我决定调整 SQL 语句以便它可以捕获 Product Name (Quantity ProductUnit) 之前,该函数运行良好。下面是我决定调整 SQL 语句之前的函数。

function fill_product_list($connect)
{
    $query = "
    SELECT * FROM products 
    WHERE product_status = 'active' 
    ORDER BY product_name ASC
    ";
    $statement = $connect->prepare($query);
    $statement->execute();
    $result = $statement->fetchAll();
    $output = '';
    foreach($result as $row)
    {
        $output .= '<option value="'.$row["product_id"].'">'.$row["product_name"].'</option>';  }
        
    return $output;
}

如有任何帮助,我们将不胜感激。

我选择所有记录解决了。


function fill_product_list($connect)
{
    $query = "
    SELECT *
    FROM products INNER JOIN inventory_order_product
    ON products.product_id = inventory_order_product.product_id
    WHERE products.product_status = 'active' 
    ORDER BY products.product_name ASC
    ";
    $statement = $connect->prepare($query);
    $statement->execute();
    $result = $statement->fetchAll();
    $output = '';
    foreach($result as $row)
    {
        $output .= '<option value="'.$row["product_id"].'">'.$row["product_name"].' ('.$row["quantity"].' '.$row["product_unit"].')</option>';
    }
    return $output;
}