[英]SQL query to SELECT multiple columns from multiple tables for display
我有一个products
表和一个inventory_order_product
表。 我需要 select product_id
, product_name
, product_unit
和product_status
来自products
表,以及quantity
来自inventory_order_product
表。 我还需要 output 以这种格式 - 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 声明之前,我包括了我调用 function fill_product_list
和原始 function 的部分
这是我在插入数据时调用 function 的地方 - 创建新订单
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。
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;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.