2012-03-19 11 views
0

私はショッピングカートを作成していますが、誰かがアイテムを注文したときに、アイテムは既に購入済みです。 (他のユーザーは、既にその商品を購入して購入していれば、カートにこの商品を追加することはできません)。購入商品は他のMySQLテーブルordersに保存されています。だから何とかこれらの2つのテーブルを比較し、注文された商品リストからこのアイテムをろ過する必要があります。どんなアドバイスですか?あなたはこのような何か行うことができます2つのDBテーブルを比較して既存のアイテムを隠す

答えて

0

SELECT * FROM items WHERE item_id NOT IN (SELECT item_id FROM orders); 
0

茶番の答えを、サブクエリを使用すると良いです。もう1つの方法は、参加を使用することです。

SELECT items.* FROM items 
LEFT OUTER JOIN orders 
ON items.item_id = orders.item_id 
WHERE orders.item_id IS NULL -- only those which had no join 
0

あなたの構造は改訂が必要な場合があります。在庫システムが通常構造化される方法は、数量(int型)の列を持つitemsテーブルがあることです。この列には、利用可能な在庫の量が含まれている必要があります。あなたはあなたが持っている目録に合うようにその番号を記入してください。誰かがこのアイテムを購入した場合は、購入した金額を差し引く必要があります。この方法では、在庫があるアイテムのすべてに新しい行を作成する必要はありません。あなたのUIには在庫がある在庫を表示する必要があります。 (数量欄が0より大きい項目)

+0

私はこれに同意します。この方法でもっと柔軟に思えるので、あなたが同じ正確なアイテムの2つを持っているという理由だけで 'items'テーブルに2つのエントリを持つ必要はありません。 – Travesty3

関連する問題