我需要实现购物车。我们假设我正在销售20种不同的商品。
我有几张简单的表格:
Cart
-------
tran_id first_name last_name items
1 John Doe 1:4:15:16
Item
-------
item_id name price
1 Ruby $1.00
2 Diamond $2.00
...
重点是,如何查询购物车并按照1:4:15:16格式的顺序显示项目,而不是Ruby,Amethyst,Opal,Silver。
答案 0 :(得分:7)
你的结构不是一对多或多对多,它只是一对一的“blob:of:冒号:分隔:文本”。
适当的多对多关系通常使用表来桥接关系。 在您的特定情况下,该表通常是“交易明细”表,而您的“购物车”表是“交易标题”表。
在这种情况下你会有三张桌子:
CART (transaction header)
---------------
tran_id NUMBER
first_name VARCHAR(100)
last_name VARCHAR(100)
CART_ITEM (transaction detail)
---------------
tran_id NUMBER
item_id NUMBER
.. other details about this line item (quantity, etc)
ITEM
---------------
item_id NUMBER
name VARCHAR(100)
price NUMBER(18,4)
然后,要查询此内容以获取您要查找的内容,请说:
SELECT h.tran_id, i.name, i.price
FROM cart h
INNER JOIN cart_item d ON (h.tran_id = d.tran_id)
INNER JOIN item i ON (d.item_id = i.item_id)
WHERE h.tran_id = 1
ORDER BY i.name