![](/img/trans.png)
[英]How to add MySQL table column with a default value of another column of the existing row
[英]Mysql add an existing column to another table
您可以將products_info表和products_info表與JOIN語句結合使用,而不是列的不必要副本。 例如:
SELECT order_items.*,
products_info.short_description
FROM order_items
LEFT JOIN products_info ON order_items.product_id = products_info.product_id
您不應該在數據庫中創建任何表,您將在PHP腳本中從此查詢中獲取數據。
您可以通過以下方式使用查詢結果:
<?php
$sql = "SELECT lcqu_orders_items.*, lcqu_products_info.short_description FROM lcqu_orders_items LEFT JOIN lcqu_products_info ON lcqu_orders_items.product_id = lcqu_products_info.product_id"
// run query
?>
<?php foreach ($order['items'] as $item) { ?>
<tr>
<td><?php echo (float)$item['quantity']; ?></td>
<td><?php echo $item['sku']; ?></td>
<td><?php echo $item['sku']; ?></td>
<--! showing short description -->
<td><?php echo $item['lcqu_products_info.short_description']; ?></td>
<td style="white-space: normal;"><?php echo $item['name']; ?>
<?php if (!empty($item['options'])) {
foreach ($item['options'] as $key => $value) {
echo '<br />- '.$key .': '. $value;
}
}?>
<!-- another code -->
}?>
問題中有兩個表,同一產品上有不同的詳細信息。 您永遠不想做的一件事是跨表重復數據。 它浪費資源並冒着數據完整性的風險。 防爆。 如果產品名稱發生變化,則必須在許多表中對其進行修改。 如果您錯過了一個,那么該應用程序將會出現問題,因為它不會總是收到相同的名稱。 您可以閱讀有關數據規范化的信息。
要對兩個表執行查詢,請使用JOIN操作。 每個產品唯一的值,並且在兩個表中都顯示為product_id。
例如,從lcqu_products_info獲取產品名稱
SELECT name
FROM lcqu_products_info
例如,從lcqu_orders_items獲取價格
SELECT price
FROM lcqu_orders_items
現在,如果您需要在單個查詢中使用名稱和價格,請使用product_id連接表:
SELECT pi.name, oi.price
FROM lcqu_products_info AS pi
LEFT JOIN lcqu_orders_items AS oi ON pi.product_id = oi.product_id
基於此,您應該從lcqu_orders_items中刪除“name”列。 應使用上面顯示的相同方法從lcqu_products_info中提取名稱。
現在關於你的PHP代碼:
<?php
foreach ($order['items'] as $item)
{
?>
<tr>
<td>
<?php echo (float)$item['quantity']; ?>
</td>
<td>
<?php echo $item['sku']; ?>
</td>
<td style="white-space: normal;">
<?php echo $item['name']; ?>
<?php
if (!empty($item['options']))
{
foreach ($item['options'] as $key => $value)
{
echo '<br />- '.$key .': '. $value;
}
}
?>
在此代碼中,您需要來自lcqu_orders_items的這些值
因此查詢應該是:
SELECT oi.quantity, oi.sku, pi.name, oi.options
FORM lcqu_orders_items AS oi
LEFT JOIN lcqu_products_info AS pi ON oi.product_id = pi.product_id
此查詢的結果將最終進入$ orders數組,您可以在其中循環和打印數據。
我知道這不是你問題的直接答案,但這樣的答案會讓你走上一條不是最佳實踐的道路,並在以后引起你的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.