注文を部品に分割しようとしています。 1、3、20は関係ありません。 それぞれの部分は、それらの製品を別の倉庫から取っていることを意味します。問題マルチパート(複数倉庫)オーダーの選択
私はこれを試してみました:
CREATE TABLE w_orders (
order_id int,
customer_id int,
PRIMARY KEY(order_id)
);
CREATE TABLE w_order_items (
order_item_id int,
order_id int,
warehouse_id int,
product_id int,
quantity int,
base_price int,
PRIMARY KEY(order_item_id)
);
CREATE TABLE w_order_parts (
order_part_id int,
order_id int,
part int,
warehouse_id int,
shipped int,
PRIMARY KEY(order_part_id)
);
w_orders
は、固有の注文IDが割り当てられているところであり、クライアントがどこに割り当てられています。
w_order_items
は、複数の倉庫から順番にすべての製品です。
そしてw_order_parts
は私が問題を抱えています。私はこのテーブルが必要です。なぜなら、この特定の倉庫からの注文が出荷されたことを示しているからです。
私は、これはこのように見えるようにPHPで処理する必要があることを理解しています。私はここでそれについて尋ねていません。ちょうどデータベースの設計とそれを選択して立ち往生してください。
私が照会しようとすると、私は同じものの倍数を得るでしょう。w_order_items
。
SELECT
w_orders.order_id,
w_orders.customer_id,
w_order_items.order_item_id,
w_order_items.order_id,
w_order_items.warehouse_id,
w_order_items.product_id,
w_order_items.quantity,
w_order_items.base_price,
w_order_parts.order_part_id,
w_order_parts.order_id,
w_order_parts.part,
w_order_parts.warehouse_id,
w_order_parts.shipped
FROM
w_orders
LEFT JOIN w_order_items
ON w_orders.order_id = w_order_items.order_id
LEFT JOIN w_order_parts
ON w_orders.order_id = w_order_parts.order_id
WHERE w_orders.order_id = '100'
へのリンクは、これは私が達成しようとしています何のために良いテーブル設計であり、私は上の画像のように適切にアイテムをSELECT
んか?
達成したい正確な出力は、通常、プレゼンテーションレイヤー(PHPなど)で最もよく処理されます。どのようにMySQLを使用していますか? –
@TimBiegeleisenうん、私はそれを知っている。私はMySQLの設計と選択に悩まされていたので、そこにはいませんでした。上記の画像は、終了時にどのように機能するかを視覚的に補助するためのものです。 – Borsn