あるmysqlテーブルから別のテーブルに値を直接コピーしようとしています...しかし、問題は、コピーする行が多いため、サブ選択ステートメントは多くの行を返しますが、パラメータ:order_id
は一度だけ書き込まれます.
その問題を考えると、このプロセスを書く方法を理解するのに苦労しています:
# 1: Create new Order & Copy the cart basket to the Order basket
$order_id = addOrder($customer_id);
if ($order_id > -1) {
$sql = "INSERT INTO tbl_order_basket(order_id, product_id, product_name,
basket_qty, basket_price, subtotal)
VALUES (:order_id, (SELECT (cart.product_id, product.name,
cart.cart_qty, cart.cart_price, cart.subtotal)
FROM tbl_shopping_cart AS cart
INNER JOIN tbl_product AS product
ON cart.product_id = product.id
WHERE cart.php_sesskey = :session_id)
)
WHERE order_id=:order_id;";
}
コピーしようとしているデータは次のとおりです。
ORDER BASKET CART BASKET PRODUCTS
FK order_id FK php_sesskey
FK product_id <-- FK product_id === PK id
product_name <-- <-- name
basket_qty <-- cart_qty
basket_price <-- cart_price # <-- : copy to
subtotal <-- subtotal # === : join on
これを行うにはどうすればよいですか?
注: PHP 5 と MySQL 5.5 を使用しています。