SQL 查询 SELECT 多个表中的多个列以供显示
SQL query to SELECT multiple columns from multiple tables for display
我有一个 products
table 和一个 inventory_order_product
table。我需要 select product_id
、product_name
、product_unit
和 product_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;
}
我有一个 products
table 和一个 inventory_order_product
table。我需要 select product_id
、product_name
、product_unit
和 product_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;
}