【发布时间】:2012-07-29 07:29:46
【问题描述】:
我有一张存储购买的桌子,还有一张存储产品的桌子。
purchases 表中的每一行最多可以包含 9 个产品 ID(8 个可以为空)
id, foo, bar, baz, product_1_id, product_2_id, product_3_id, etc...
现在我需要查询该 purchases 表的所有字段,以显示在 html 页面中。
我不能只显示products id,所以需要在products表中找到对应的product_name。
SQL 查询让我很难受。
任何帮助将不胜感激。
【问题讨论】:
-
您不应该只有一个产品表,而不是限制购买九个产品吗?
-
能否重新设计数据库以使用连接表?
-
“购买表中的每一行最多可以包含 9 个产品 ID(8 个可以为空)”。通常,这将存储在单独的表“purchase_item”或“purchase_product”中。我想“购买”并不是一个好名字,因为它指的是一个单独的项目。经典名称是“purchase_order”和“purchase_order_item”或“purchase_order_line”。您的设计的问题在于它不灵活(每次购买最多 9 个产品)并且很难查询。每次购买时,您都需要加入每个潜在产品。使用单独的 purchase_order_item 表,您只需要一个。
-
我想知道当他/她将第 10 个产品添加到订单中时,您会向用户发送什么消息。 “抱歉,我们只想卖给你9件?” :)
-
你的cmets是对的,我必须承认。但是,如果有人想一次购买十种产品,我很乐意从头开始重新考虑一切,免费......;)